home *** CD-ROM | disk | FTP | other *** search
- HIDEM
- OPTION BASE 0
- GOSUB datenordner
- CLR bitmuster$
- FOR i#=1 TO 37
- READ zeilenmuster#
- bitmuster$=bitmuster$+MKI$(zeilenmuster#)
- NEXT i#
- DEFMOUSE bitmuster$
- DATA 7,7,1,0,1
- ' MASKENMUSTER
- DATA &X0000001000000000
- DATA &X0000011100000000
- DATA &X0000111110000000
- DATA &X0000111110000000
- DATA &X0001111111000000
- DATA &X0001111111000000
- DATA &X0011111111000000
- DATA &X1111101111000111
- DATA &X1111001111011111
- DATA &X0000001111111100
- DATA &X0000001111111000
- DATA &X0000001111111000
- DATA &X0000000111110000
- DATA &X0000000111110000
- DATA &X0000000011100000
- DATA &X0000000001000000
- ' CURSOR MUSTER
- ' 1234567890123456
- DATA &X0000000000000000
- DATA &X0000001000000000
- DATA &X0000011100000000
- DATA &X0000011100000000
- DATA &X0000110110000000
- DATA &X0000110110000000
- DATA &X0001100110000000
- DATA &X0111000110000110
- DATA &X0110000110001110
- DATA &X0000000110011000
- DATA &X0000000110110000
- DATA &X0000000110110000
- DATA &X0000000011100000
- DATA &X0000000011100000
- DATA &X0000000001000000
- DATA &X0000000000000000
- esrordner:
- CHDIR "\ESR"
- IF EXIST("SYSIPHUS.PIC")
- bild_da!=TRUE
- OPEN "I",#1,"SYSIPHUS.PIC"
- BLOAD "SYSIPHUS.PIC",XBIOS(2)
- CLOSE #1
- ELSE
- ALERT 1," | WER HAT DENN DA | SCHON WIEDER KOPIERT ? ",1,"DAS WARS | WEITER",looser%
- IF looser%=1
- END
- ELSE
- CHDIR "\"
- IF EXIST("SYSIPHUS.PIC")
- NAME "SYSIPHUS.PIC" AS "\ESR\SYSIPHUS.PIC"
- bild_da!=TRUE
- GOTO esrordner
- ENDIF
- ENDIF
- ENDIF
- IF bild_da!=TRUE
- DO
- IF MOUSEK>0
- maus#=1
- ENDIF
- IF INKEY$>""
- maus#=1
- ENDIF
- EXIT IF maus#=1
- LOOP
- ENDIF
- '
- ' **********************************************************************
- ' ****************** SYSIPHUS 1.2 ***********************
- ' ****************** ESR-SIMULATIONSPROGRAMM ***********************
- ' ****************** MIT VIEL MÜHE GESCHRIEBEN ***********************
- ' ****************** VON Dr. GREGOR KRAFT ***********************
- ' ****************** ANNO DOMINI 1989 ***********************
- ' **********************************************************************
- SHOWM
- ON BREAK GOSUB ende
- '
- CHDIR "\DATEN\"
- '
- OPENW 0 ! Pull down - Menue erstellen
- DIM eintrag$(55)
- DO
- READ eintrag$(i%)
- EXIT IF eintrag$(i%)="****"
- INC i%
- LOOP
- '
- DATA SYSIPHUS, INFO,------------------------,1,2,3,4,5,6,""
- DATA DATEI,LADEN,SPEICHERN,LOESCHEN,""
- DATA PARAMETER,ATOMGRUPPEN,KERNPARAMETER,SPEKTRUMPARAMETER,""
- DATA SPEKTRUM,SIMULATION,STICKLINE,HÜLLKURVE,""
- DATA OPTIONEN,FILENAME,ANDERE SWEEPWIDTH,AUSSCHNITT,STUPID,FORMATIEREN,VERGRÖßERN,g-WERT,""
- DATA BILDER,SCREENCOPY,HARDCOPY,PLOTTER,SIGNUM,""
- DATA ARBEIT,ANSCHAUEN,AUFSCHREIBEN,SPEKBEREICH,VERGLEICH,DIFFERENZ,""
- DATA INPUT,ESP300,MESS-SPEKTREN,""
- DATA ENDE,QUIT,"",""
- DATA ****
- MENU eintrag$()
- '
- auf#=1024
- '
- ON MENU KEY GOSUB tasten
- ON MENU GOSUB auswahl
- '
- MENU 11,3
- MENU 12,3
- MENU 17,2
- MENU 21,2
- MENU 22,2
- MENU 23,2
- MENU 27,2
- MENU 28,2
- MENU 30,3
- MENU 31,2
- MENU 36,2
- MENU 37,2
- MENU 35,2
- MENU 38,2
- MENU 41,2
- MENU 42,2
- MENU 43,2
- MENU 44,2
- MENU 45,2
- '
- '
- neustart:
- rettung!=0
- ON ERROR GOSUB fehlerbehandlung
- '
- DO
- ON MENU
- '
- GOSUB maus_abschalten
- GOSUB maus_einschalten
- LOOP
- '
- '
- PROCEDURE auswahl ! Auswahl der Menues
- DEFMOUSE bitmuster$
- '
- DEFFILL 0
- PBOX 0,0,640,400
- IF INSTR(eintrag$(MENU(0)),"INFO")
- GOSUB information
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"ATOMGRUPPEN")
- GOSUB atom
- ENDIF
- ' '
- '
- IF INSTR(eintrag$(MENU(0)),"KERNPARAMETER")
- GOSUB eingabe
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"SPEKTRUMPARAMETER")
- GOSUB spektrenparameter
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"SIMULATION")
- GOSUB hyper
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"STICKLINE")
- GOSUB bild
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"ANDERE SWEEPWIDTH")
- GOSUB messbereich
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"HÜLLKURVE")
- GOSUB linienform
- ENDIF
- '
- IF INSTR(eintrag$(MENU(o#)),"QUIT")
- GOSUB ende
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"LADEN")
- GOSUB lese
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"SPEICHERN")
- GOSUB schreibe
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"LOESCHEN")
- GOSUB loesche
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"FILENAME")
- GOSUB namensgebung
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"AUSSCHNITT")
- GOSUB bereich
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"STUPID")
- GOSUB robot
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"FORMATIEREN")
- GOSUB format
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"HARDCOPY")
- GOSUB hardcopy
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"VERGRÖßERN")
- GOSUB aufblasen
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"PLOTTER")
- GOSUB hp7475a
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"g-WERT")
- GOSUB gwert
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"SCREENCOPY")
- GOSUB pixel
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"SIGNUM")
- GOSUB sichnum
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"ANSCHAUEN")
- GOSUB espspektrum
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"AUFSCHREIBEN")
- GOSUB messchreiben
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"SPEKBEREICH")
- GOSUB spekmessbereich
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"VERGLEICH")
- GOSUB simmess
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"DIFFERENZ")
- GOSUB differenz
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"ESP300")
- GOSUB esp300
- ENDIF
- '
- IF INSTR(eintrag$(MENU(0)),"MESS-SPEKTREN")
- GOSUB messlese
- ENDIF
- '
- '
- MENU OFF
- RETURN
- '
- '
- PROCEDURE maus_abschalten
- DPOKE GINTIN,3
- GEMSYS 107
- maus_ist_aus!=TRUE
- RETURN
- '
- PROCEDURE maus_einschalten
- DPOKE GINTIN,2
- GEMSYS 107
- maus_ist_aus!=FALSE
- RETURN
- '
- PROCEDURE ende
- IF maus_ist_aus!=TRUE
- GOSUB maus_einschalten
- ENDIF
- ALERT 2," | PROGRAMM WIRKLICH | BEENDEN ? ",1," S'LANGT | OH GOTT!",anfra%
- IF anfra%=2
- GOTO heschel
- ENDIF
- MENU KILL
- END
- heschel:
- RETURN
- '
- PROCEDURE information
- MENU OFF
- LOCAL maus%
- BOX 100,50,540,350
- BOX 105,55,535,345
- DEFTEXT 1,17,0,16
- TEXT 150,80,340,"PROVINZ-SOFT PRESENT"
- DEFTEXT 1,11,0,24
- TEXT 180,120,280,"SYSIPHUS 1.2"
- DEFTEXT 1,0,0,13
- TEXT 150,160,340," EIN BRAUCHBARES ESR-SIMULATIONSPROGRAMM "
- TEXT 150,180,340," FÜR EINEN BRAUCHBAREN COMPUTER "
- TEXT 150,200,340," GESCHRIEBEN IN GFA-BASIC "
- DEFTEXT 1,16,0,13
- TEXT 150,220,340," ANNO DOMINI 1989 "
- DEFTEXT 1,0,0,13
- TEXT 150,240,340," VON DR.GREGOR KRAFT; JAHNSTR.2,6701 MAXDORF "
- TEXT 150,260,340,"DIESES PROGRAMM IST FREEWARE UND DARF FREI"
- TEXT 150,280,340,"KOPIERT WERDEN ! MÖGE ES VON NUTZEN SEIN !"
- BOX 250,290,390,320
- TEXT 270,310,100," SO ISSES "
- DO
- IF MOUSEX>250 AND MOUSEX<390 AND MOUSEY>290 AND MOUSEY<320 AND MOUSEK=1
- maus%=1
- ENDIF
- IF INKEY$=CHR$(13)
- maus%=1
- ENDIF
- EXIT IF maus%=1
- LOOP
- CLS
- ' ********************************************************************
- BOX 100,50,540,350
- BOX 105,55,535,345
- DEFTEXT 1,8,0,13
- TEXT 150,80,340,"UNTERSAGT IST DIE GEWERBLICHE NUTZUNG !!"
- TEXT 150,120,340," AUSDRÜCKLICH UNTERSAGT IST DIE NUTZUNG "
- TEXT 150,140,340,"DES PROGRAMMS DURCH DIE FIRMA BRUKER GMBH"
- DEFTEXT 1,0,0,13
- TEXT 150,160,340,"VERÄNDERUNGEN AN DIESEM PROGRAMM BEDÜRFEN"
- TEXT 150,180,340," MEINER AUSDRÜCKLICHEN GENEHMIGUNG "
- TEXT 150,220,340," DIE WEITERGABE DIESES PROGRAMMS IST NUR MIT"
- TEXT 150,240,340," DEN DATEIEN SYSIPHUS.TXT UND SYSIPHUS.SDO "
- TEXT 150,260,340," GESTATTET (UND AUCH SINNVOLL) "
- BOX 250,290,390,320
- TEXT 270,310,100," NA KLAR "
- maus%=0
- DO
- IF MOUSEX>250 AND MOUSEX<390 AND MOUSEY>290 AND MOUSEY<320 AND MOUSEK=1
- maus%=1
- ENDIF
- IF INKEY$=CHR$(13)
- maus%=1
- ENDIF
- EXIT IF maus%=1
- LOOP
- CLS
- RETURN
- '
- '
- PROCEDURE messbereich ! Eingabe der Sweep-Width (wenn andere
- MENU OFF
- LOCAL s#,maus%
- DEFTEXT 1,0,0,13 ! sweep-width im Prog.-ablauf gewünscht
- PRINT AT(20,10);"SWEEP-WIDTH :___________|____________" !wird
- PRINT AT(35,10);sweep#
- BOX 250,300,350,330
- PRINT AT(36,20);"OK?"
- BOX 250,143,450,160
- DO
- IF ((250<MOUSEX AND 450>MOUSEX) AND (143<MOUSEY AND 160>MOUSEY) AND MOUSEK=1)
- maus%=1
- ENDIF
- IF ((250<MOUSEX AND 350>MOUSEX) AND (300<MOUSEY AND 350>MOUSEY) AND MOUSEK=1)
- maus%=2
- ENDIF
- EXIT IF maus%<>0
- LOOP
- IF maus%=1
- PRINT AT(47,10);
- INPUT s#
- sweep#=ABS(s#)
- PRINT AT(35,10);sweep#
- ENDIF
- CLS
- IF spektrum!=TRUE
- GOSUB bild
- ELSE
- GOSUB zeichnung
- ENDIF
- RETURN
- '
- PROCEDURE spektrenparameter ! Eingabe der Auflösung,
- MENU OFF
- BOX 40,20,600,360 ! der Halbwerstbreite und
- DEFFILL 1,1 ! der Sweep-Width
- PBOX 250,60,350,90
- PBOX 250,300,350,330
- LOCAL sw$,halbwert$,sw1#,auf1#,halbwertsbreite#,maus%,button%,bu%,butt%
- auf1#=auf#
- sw1#=sw#
- halbwertsbreite#=halbwert#
- GRAPHMODE 2
- DEFTEXT 0,0,0,13
- TEXT 180,50,250,"AUFLÖSUNG"
- TEXT 270,320,60,"OK?"
- GRAPHMODE 1
- DEFTEXT 1,0,0,13
- BOX 60,125,160,155
- TEXT 70,145,80,"1024"
- BOX 204,125,304,155
- TEXT 214,145,80,"2048"
- BOX 344,125,444,155
- TEXT 355,145,80,"4096"
- BOX 490,125,590,155
- TEXT 500,145,80,"8192"
- PRINT AT(36,5);auf1#
- BOX 265,207,455,227
- BOX 265,237,455,258
- PRINT AT(10,13);"SIMULATIONS"
- PRINT AT(10,14);"SWEEP-WIDTH IN GAUß :___________|___________"
- PRINT AT(10,16);"HALBWERTSBREITE IN GAUß :___________|___________"
- PRINT AT(37,14);sw1#
- PRINT AT(37,16);halbwertsbreite#
- mehr:
- maus%=0
- DO
- IF ((265<MOUSEX AND 455>MOUSEX) AND (207<MOUSEY AND 227>MOUSEY) AND MOUSEK=1)
- maus%=3
- ENDIF
- IF ((265<MOUSEX AND 455>MOUSEX) AND (237<MOUSEY AND 258>MOUSEY) AND MOUSEK=1)
- maus%=4
- ENDIF
- IF INKEY$=CHR$(13)
- maus%=2
- ENDIF
- IF ((250<MOUSEX AND 350>MOUSEX) AND (300<MOUSEY AND 330>MOUSEY) AND MOUSEK=1)
- maus%=2
- ENDIF
- IF ((60<MOUSEX AND 160>MOUSEX) AND (125<MOUSEY AND 155>MOUSEY) AND MOUSEK=1)
- maus%=1
- auf#=1024
- ENDIF
- IF ((204<MOUSEX AND 304>MOUSEX) AND (125<MOUSEY AND 155>MOUSEY) AND MOUSEK=1)
- maus%=1
- auf#=2048
- ENDIF
- IF ((344<MOUSEX AND 444>MOUSEX) AND (125<MOUSEY AND 155>MOUSEY) AND MOUSEK=1)
- maus%=1
- auf#=4096
- ENDIF
- IF ((490<MOUSEX AND 590>MOUSEX) AND (125<MOUSEY AND 155>MOUSEY) AND MOUSEK=1)
- maus%=1
- auf#=8192
- ENDIF
- EXIT IF maus%>0
- LOOP
- IF maus%=1
- IF auf1#<>auf#
- IF (simgauss%+simlorentz%+simgauss_lorentz%)>0
- ALERT 3," ÄNDERUNG DER AUFLÖSUNG | BEDINGT DAS LÖSCHEN DER | SIMULIERTEN GAUß- UND | LORENTZKURVE ",1," ABBRUCH | WEITER ",button%
- IF button%=2
- auf1#=auf#
- simgauss%=0
- simlorentz%=0
- simgauss_lorentz%=0
- ERASE huelk%()
- MENU 27,2
- MENU 28,2
- ELSE
- auf#=auf1#
- ENDIF
- ELSE
- auf1#=auf#
- ENDIF
- ENDIF
- PRINT AT(36,5);auf1#
- GOTO mehr
- ENDIF
- IF maus%=3
- PRINT AT(48,14);
- FORM INPUT 7,sw$
- sw#=ABS(VAL(sw$))
- IF sw1#<>sw#
- IF (simgauss%+simlorentz%+simgauss_lorentz%)>0
- ALERT 3," ÄNDERUNG DER SWEEP-WIDTH | BEDINGT DAS LÖSCHEN DER | SIMULIERTEN GAUß- UND | LORENTZKURVE ",1," ABBRUCH | WEITER ",butt%
- IF butt%=2
- sw1#=sw#
- ERASE huelk%()
- simgauss%=0
- simlorentz%=0
- simgauss_lorentz%=0
- MENU 27,2
- MENU 28,2
- MENU 31,2
- MENU 36,2
- MENU 37,2
- MENU 38,2
- MENU 44,2
- ELSE
- sw#=sw1#
- ENDIF
- ELSE
- sw1#=sw#
- sweep#=sw#
- ENDIF
- ENDIF
- PRINT AT(37,14);"_________";
- PRINT AT(37,14);sw1#;
- GOTO mehr
- ENDIF
- IF maus%=4
- PRINT AT(48,16);
- FORM INPUT 7,halbwert$
- halbwert#=ABS(VAL(halbwert$))
- IF halbwertsbreite#<>halbwert#
- IF (simgauss%+simlorentz%+simgauss_lorentz%)>0
- ALERT 3," ÄNDERUNG DES HALBWERTSBREITE | BEDINGT DAS LÖSCHEN DER | SIMULIERTEN GAUß- UND | LORENTZKURVE ",1," ABBRUCH | WEITER ",bu%
- IF bu%=2
- halbwertsbreite#=halbwert#
- ERASE huelk%()
- simgauss%=0
- simlorentz%=0
- simgauss_lorentz%=0
- MENU 28,2
- MENU 27,2
- MENU 31,2
- MENU 36,2
- MENU 37,2
- MENU 38,2
- MENU 44,2
- ELSE
- halbwert#=halbwertsbreite#
- ENDIF
- ELSE
- halbwertsbreite#=halbwert#
- ENDIF
- ENDIF
- PRINT AT(37,16);"_________";
- PRINT AT(37,16);halbwert#
- GOTO mehr
- ENDIF
- CLS
- RETURN
- '
- PROCEDURE tasten !Tastenbelegung
- LOCAL scancode%
- scancode%=SHR(MENU(14),8)
- asc%=ASC(t$)
- IF scancode%=68
- GOSUB ende
- ENDIF
- IF scancode%=67
- GOSUB rausch
- ENDIF
- IF scancode%=60
- GOSUB laufwerk
- ENDIF
- RETURN
- '
- '
- '
- ' *************************************************************************
- '
- PROCEDURE atom !Eingabe der Zahl der Unabhängigen Atomgruppen
- MENU OFF
- LOCAL maus#,nik$,nikaerst%,button%
- eingabe:
- maus#=0
- nikaerst%=nika%
- BOX 80,200,280,230
- BOX 320,200,520,230
- DEFTEXT 1,9,0,16
- TEXT 85,223,180,"EINGABE OK?"
- TEXT 325,223,180,"ÄNDERN?"
- DEFTEXT 1,0,0,13
- PRINT AT(20,10);"UNABHÄNGIGE ATOMGRUPPEN:_____|___";""
- PRINT AT(47,10);nika%
- IF nika%=0
- GOTO hinein
- ENDIF
- DO
- IF INKEY$=CHR$(13)
- maus#=1
- ENDIF
- IF ((85<MOUSEX AND 275>MOUSEX) AND (205<MOUSEY AND 225>MOUSEY)) AND MOUSEK=1
- maus#=1
- ENDIF
- IF ((325<MOUSEX AND 515>MOUSEX) AND (205<MOUSEY AND 225>MOUSEY)) AND MOUSEK=1
- maus#=2
- ENDIF
- EXIT IF maus#>0
- LOOP
- IF maus#=1
- GOTO atomende
- ENDIF
- hinein:
- PRINT AT(50,10);
- FORM INPUT 2,nik$
- PRINT AT(43,10);":__________"
- PRINT AT(47,10);nika%
- nika%=FIX(ABS(VAL(nik$)))
- PRINT AT(47,10);nika%
- IF nika%=0
- GOTO eingabe
- ENDIF
- IF nikaerst%>0
- IF nikaerst%<>nika%
- ALERT 3," ÄNDERN DER ZAHL DER | UNABHÄNGIGEN ATOMGRUPPEN | BEDINGT DAS LÖSCHEN DER | SIMULIERTEN SPEKTREN ",1,"ABBRUCH | WEITER ",button%
- IF button%=1
- nika%=nikaerst%
- GOTO eingabe
- ENDIF
- ERASE ag1#()
- ERASE ag#()
- ERASE at$()
- ERASE hy#()
- ERASE intensi#()
- ERASE huelk%()
- simgauss%=0
- simlorentz%=0
- simgauss_lorentz%=0
- simstick%=0
- MENU 21,2
- MENU 22,2
- MENU 23,2
- MENU 27,2
- MENU 28,2
- MENU 31,2
- MENU 36,2
- MENU 37,2
- MENU 38,2
- MENU 44,2
- ELSE
- GOTO eingabe
- ENDIF
- ENDIF
- nikaerst%=nika%
- DIM ag#(nika%,2)
- DIM at$(nika%,2)
- DIM ag1#(nika%,2)
- GOTO eingabe
- atomende:
- CLS
- MENU 17,3
- RETURN
- '
- ' **************************************************************************
- '
- PROCEDURE eingabe ! Eingabe der Kernparameter; Spin,Anzahl und Kopplungs-
- MENU OFF
- DEFFILL 1,1 ! konstante
- LOCAL k%,maus#,but%,butt%,j%
- PBOX 25,330,450,360
- PBOX 200,100,250,120
- GRAPHMODE 2
- DEFTEXT 0,1,0,13
- TEXT 50,350,350,"ZUM ÄNDERN DER DATEN: RECHTE MAUSTASTE !"
- TEXT 205,115,50," OK ? "
- GRAPHMODE 1
- BOX 25,20,450,360
- FOR k%=1 TO nika%
- ein:
- maus#=0
- DEFTEXT 1,20,0,10,
- TEXT 50,300,400,"Eingabe in Ordnung?"
- DEFTEXT 1,0,0,6
- BOX 127,307,190,327
- TEXT 50,320,380,"weiter mit return! korrektur mit beliebiger Taste"
- BOX 70,100,100,120
- BOX 350,100,380,120
- TEXT 80,112,15,"<="
- TEXT 360,112,15,"=>"
- DEFTEXT 1,16,0,13
- TEXT 100,50,300,"K E R N P A R A M E T E R"
- DEFTEXT 1,0,0,13
- PRINT AT(10,5);"Atomgruppe ";k%;" von ";nika%;" unabhängigen Atomgruppen"
- PRINT AT(10,10);"spin....................:__________"
- PRINT AT(36,10);ag#(k%,0)
- PRINT AT(10,12);"Anzahl der äquivalenten"
- PRINT AT(10,13);"Atome dieser Gruppe......:__________"
- PRINT AT(36,13);ag#(k%,1)
- PRINT AT(10,16);"Kopplungskonstante......:__________"
- PRINT AT(36,16);ag#(k%,2)
- '
- IF (ag#(k%,0)=0 OR ag#(k%,1)=0 OR ag#(k%,2)=0)
- GOTO ein1
- ENDIF
- '
- DO
- IF ((127<MOUSEX AND 185>MOUSEX) AND (310<MOUSEY AND 326>MOUSEY) AND MOUSEK=1)
- maus#=1
- ENDIF
- IF (INKEY$<>"") OR MOUSEK=2
- maus#=2
- ENDIF
- IF ((75<MOUSEX AND 95>MOUSEX) AND (100<MOUSEY AND 120>MOUSEY) AND MOUSEK=1)
- maus#=3
- ENDIF
- IF ((355<MOUSEX AND 375>MOUSEX) AND (100<MOUSEY AND 120>MOUSEY) AND MOUSEK=1)
- maus#=4
- ENDIF
- IF ((200<MOUSEX AND 250>MOUSEX) AND (100<MOUSEY AND 120>MOUSEY) AND MOUSEK=1)
- maus#=5
- ENDIF
- EXIT IF maus#<>0
- LOOP
- IF maus#=1
- GOTO naexte
- ENDIF
- '
- IF maus#=3
- k%=k%-2
- IF k%<0
- k%=nika%-1
- ENDIF
- GOTO naexte
- ENDIF
- IF maus#=4
- IF k%=nika%
- k%=0
- ENDIF
- GOTO naexte
- ENDIF
- IF maus#=5
- k%=nika%
- GOTO naexte
- ENDIF
- ein1:
- '
- MENU 21,3
- PRINT AT(35,10);"?"
- PRINT AT(36,10);
- FORM INPUT 10 AS at$(k%,0)
- PRINT AT(35,10);" "
- ag1#(k%,0)=VAL(at$(k%,0))
- PRINT AT(35,13);"?"
- PRINT AT(36,13);
- FORM INPUT 10 AS at$(k%,1)
- PRINT AT(35,13);" "
- ag1#(k%,1)=FIX(ABS(VAL(at$(k%,1))))
- PRINT AT(35,16);"?"
- PRINT AT(36,16);
- FORM INPUT 10 AS at$(k%,2)
- PRINT AT(35,16);" "
- ag1#(k%,2)=ABS(VAL(at$(k%,2)))
- i_np#=INP(2)
- IF i_np#<>13
- GOTO ein1
- ENDIF
- '
- ' *************************** Abfrage ob die Eingegebenen Daten
- IF ag1#(k%,0)=0 OR ag1#(k%,1)=0 OR ag1#(k%,2)=0 ! mit der Programmsyntax
- GOTO ein1 ! verträglich sind
- ENDIF
- '
- IF ag1#(k%,0)<>1 AND ag1#(k%,0)<>0.5
- IF FRAC(2*ag1#(k%,0))<>0
- ALERT 1," DEN ' SPINNERTEN' SPINN | KENNEN MER NET ! ",1," ZURÜCK | WEITER ",butt%
- IF butt%<>1
- ALERT 3," ORGANIKER ?? ",1," ZURÜCK ",button%
- GOTO ein1
- ENDIF
- GOTO ein1
- ENDIF
- ENDIF
- '
- ' ***********************************************************************
- '
- IF ag#(k%,0)<>0 OR ag#(k%,1)<>0 OR ag#(k%,2)<>0
- IF ag1#(k%,0)<>ag#(k%,0) OR ag1#(k%,1)<>ag#(k%,1) OR ag1#(k%,2)<>ag#(k%,2)
- ALERT 1," ÄNDERN DER PARAMETER | HAT DAS LÖSCHEN DER | SIMULIERTEN SPEKTREN | ZURFOLGE !",1,"ABBRUCH | WEITER ",but%
- IF but%=2
- FOR j%=0 TO 2
- ag#(k%,j%)=ag1#(k%,j%)
- at$(k%,j%)=STR$(ag1#(k%,j%))
- NEXT j%
- ERASE hy#()
- ERASE intensi#()
- ERASE huelk%()
- simgauss%=0
- simlorentz%=0
- simgauss_lorentz%=0
- simstick%=0
- MENU 22,2
- MENU 23,2
- MENU 21,3
- MENU 27,2
- MENU 28,2
- MENU 31,2
- MENU 36,2
- MENU 37,2
- MENU 38,2
- MENU 44,2
- ENDIF
- FOR j%=0 TO 2
- at$(k%,j%)=STR$(ag#(k%,j%))
- NEXT j%
- GOTO ein
- ENDIF
- ENDIF
- FOR j%=0 TO 2
- ag#(k%,j%)=ag1#(k%,j%)
- at$(k%,j%)=STR$(ag1#(k%,j%))
- NEXT j%
- naexte:
- PRINT AT(36,10);" "
- PRINT AT(36,13);" "
- PRINT AT(36,16);" "
- NEXT k%
- eingabeend:
- CLS
- RETURN
- '
- PROCEDURE hyper ! Berechnung der Linienzahl eines sim.Spektrums
- MENU OFF
- LOCAL n#,k%,m#,m%,i#,j%,i%,g#,x#,z#,y#,x%,kleii#,kleis#
- DEFTEXT 1,0,0,13
- DIM zwn#(nika%)
- n#=1
- DEFTEXT 1,0,0,13
- FOR k%=1 TO nika%
- zwn#(k%)=2*ag#(k%,0)*ag#(k%,1)+1
- PRINT "linien der Gruppe ",k%,zwn#(k%)
- n#=n#*zwn#(k%)
- NEXT k%
- PRINT "anzahl der Linien N=",n#
- FOR k%=1 TO nika%
- IF zwn#(k%)>m#
- m#=zwn#(k%)
- ENDIF
- NEXT k%
- ' ! Zuordnung der Intensitäten zu den einzelnen
- ' ! Kopplungen innerhalb einer Atomgruppe
- DIM hyp#(nika%,m#),int#(nika%,m#)
- ARRAYFILL hyp#(),0
- FOR k%=1 TO nika%
- d#=(zwn#(k%)-1)/2
- FOR g#=zwn#(k%) DOWNTO 1
- hyp#(k%,g#)=d#*ag#(k%,2)
- d#=d#-1
- NEXT g#
- GOSUB spin
- NEXT k%
- MENU 21,2
- hyperfine: !Hyperfine-Aufspaltung des gesammten Spektrums incl. Intensitäten
- DIM h#(n#),hy#(n#),intensi#(n#),in#(n#)
- FOR i%=1 TO n#
- h#(i%)=0
- in#(i%)=1
- NEXT i%
- z#=1
- FOR k%=1 TO nika%
- x#=0
- FOR m#=1 TO z#
- FOR g#=1 TO zwn#(k%)
- INC x#
- hy#(x#)=h#(m#)+hyp#(k%,g#)
- intensi#(x#)=in#(m#)*int#(k%,g#)
- NEXT g#
- NEXT m#
- z#=z#*zwn#(k%)
- FOR x#=1 TO z#
- h#(x#)=hy#(x#)
- in#(x#)=intensi#(x#)
- NEXT x#
- NEXT k%
- '
- '
- reduzierung: !Reduzierung der Gesamtlinienzahl auf die beobachtbaren Linien
- '
- '
- centerfield#=10000 ! Da eh nicht absolut gerechnet werden kann ist center-
- FOR x#=1 TO n# ! field so gewählt, daß immer (im Normalfall) die Auf-
- h#(x#)=h#(x#)+centerfield# ! spaltungen im positiven Bereich sind.
- NEXT x#
- ARRAYFILL hy#(),0
- ARRAYFILL intensi#(),0
- m#=0
- FOR x#=1 TO n#
- IF h#(x#)=0
- ELSE
- ADD m#,1
- hy#(m#)=h#(x#)
- intensi#(m#)=intensi#(x#)
- FOR y#=x# TO n#
- IF hy#(m#)=h#(y#)
- h#(y#)=0
- ~FRE()
- ADD intensi#(m#),in#(y#)
- ENDIF
- NEXT y#
- ENDIF
- NEXT x#
- b#=m#
- '
- IF b#<n#
- PRINT " ZUFÄLLIGE ENTARTUNG : NUR NOCH ";b#;"-LINIEN ZU SEHEN"
- SWAP h#(),hy#()
- SWAP in#(),intensi#()
- ERASE intensi#(),hy#()
- DIM hy#(b#),intensi#(b#)
- FOR x%=1 TO b#
- ~FRE()
- hy#(x%)=h#(x%)
- intensi#(x%)=in#(x%)
- NEXT x%
- ENDIF
- ' ********* Sortierung der Hyperfine-Aufspaltung nach der Größe *******
- intmax#=0
- intmin#=1
- FOR m#=1 TO b#
- kleis#=hy#(m#)
- kleii#=intensi#(m#)
- FOR x#=m# TO b#
- ~FRE()
- IF hy#(x#)<kleis#
- hy#(m#)=hy#(x#)
- hy#(x#)=kleis#
- kleis#=hy#(m#)
- intensi#(m#)=intensi#(x#)
- intensi#(x#)=kleii#
- kleii#=intensi#(m#)
- ENDIF
- NEXT x#
- NEXT m#
- m%=0
- DO
- INC m%
- IF intmax#<intensi#(m%)
- intmax#=intensi#(m%)
- IF intmin#>intensi#(m%)
- intmin#=intensi#(m%)
- ENDIF
- ENDIF
- EXIT IF m%=b#
- LOOP
- MENU 22,3
- MENU 23,3
- simstick%=1
- ERASE in#(),zwn#(),h#(),hyp#(),int#()
- RETURN
- '
- PROCEDURE bild ! Zeichnung eines Stick-Line-Spektrums
- MENU OFF
- CLS
- LOCAL null#,fak#,weite#,m#
- IF sweep#=0
- IF sw#=0
- ALERT 3," | | SWEEP-WIDTH IST 0 ! ",1," ABBRUCH ",button%
- GOTO bildend
- ENDIF
- sweep#=sw#
- ENDIF
- null#=centerfield#-sweep#*0.5
- fak#=587/sweep#
- DEFLINE 1,2,0,0
- BOX 27,60,613,360
- LINE 27,360,27,365
- LINE 321,360,321,365
- LINE 613,360,613,365
- DEFTEXT 1,0,0,6
- PRINT AT(3,2);"Filename: ";finame$;
- PRINT AT(3,80);"0.0";
- PRINT AT(40,80);sweep#*0.5;
- PRINT AT(75,80);sweep#;
- FOR m#=1 TO b#
- weite#=(hy#(m#)-null#)*fak#
- IF weite#<0
- GOTO weiter
- ENDIF
- DEFLINE 1,0,0,0
- LINE 27+weite#,intensi#(m#)*100/intmax#+210,27+weite#,210-intensi#(m#)*100/intmax#
- weiter:
- NEXT m#
- spektrum!=TRUE
- MENU 27,3
- HIDEM
- SGET x1$
- SHOWM
- MENU 35,3
- MENU 36,3
- IF mess!=-1
- MENU 44,3
- ENDIF
- simm!=-1
- simess!=0
- messplo!=0
- bildend:
- RETURN
- '
- PROCEDURE linienform ! Initialisierung der Hüllkurvenform
- MENU OFF
- LOCAL maus%,bib%,butt%,but%,button%,prog#,l%
- CLS
- simkurve%=simgauss%+simlorentz%+simgauss_lorentz%
- IF f_ormstupid!=TRUE
- GOTO simstupid
- ENDIF
- linformein:
- maus%=0
- DEFTEXT 1,0,0,13
- BOX 40,40,600,350
- BOX 110,90,530,120
- TEXT 120,110,200,"AKTUELLE EINSTELLUNG :"
- TEXT 330,110,190,kurform$
- BOX 90,170,190,210
- TEXT 100,197,80,"GAUß"
- BOX 450,170,550,210
- TEXT 455,197,90,"GAUß/LORENTZ"
- BOX 270,170,370,210
- TEXT 280,197,80,"LORENTZ"
- GRAPHMODE 2
- DEFFILL 1,1
- PBOX 250,300,350,330
- DEFTEXT 0,0,0,13
- TEXT 280,320,50,"OK?"
- GRAPHMODE 1
- DEFTEXT 1,1,0,13
- DO
- IF ((90<MOUSEX AND 190>MOUSEX) AND (170<MOUSEY AND 210>MOUSEY) AND MOUSEK=1)
- kurve%=1
- maus%=1
- LET kurform$="GAUßKURVE"
- ENDIF
- IF ((270<MOUSEX AND 370>MOUSEX) AND (170<MOUSEY AND 210>MOUSEY) AND MOUSEK=1)
- maus%=2
- kurve%=2
- kurform$="LORENTZKURVE"
- prol#=1
- ENDIF
- IF ((450<MOUSEX AND 550>MOUSEX) AND (170<MOUSEY AND 210>MOUSEY) AND MOUSEK=1)
- maus%=3
- kurve%=3
- kurform$="GAUß/LORENTZ-KURVE"
- ENDIF
- IF kurve%>0
- IF INKEY$=CHR$(13)
- maus%=4
- ENDIF
- IF ((250<MOUSEX AND 350>MOUSEX) AND (300<MOUSEY AND 330>MOUSEY) AND MOUSEK=1)
- maus%=4
- ENDIF
- ENDIF
- EXIT IF maus%<>0
- LOOP
- IF maus%<4
- TEXT 330,110,200," "
- GOTO linformein
- ENDIF
- simstupid: ! Überprüfen ob die Berechnung möglich ist
- IF simkurve%=0
- IF sw#=0
- ALERT 3," | | SWEEP-WIDTH IST 0 !",1," ABBRUCH ",butt%
- GOTO huellend
- ENDIF
- IF halbwert#=0
- ALERT 3," HALBWERTSBREITE IST NICHT | | DEFINIERT ! ",1," ABBRUCH ",butt%
- GOTO huellend
- ENDIF
- ppg#=auf#/sw#
- bip#=(hy#(b#)-hy#(1)+halbwert#*20)*ppg#
- IF bip#<auf#
- simsw#=sw#
- bi%=auf#
- ELSE
- IF FRE(0)<bi%*24+150000
- ALERT 3," | ZU WENIG SPEICHERPLATZ | VORERST NUR ... ",1," ABBRUCH ",but%
- GOTO huellend
- ENDIF
- bi%=INT(bip#)
- IF 0=EVEN(bi%)
- INC bi%
- ENDIF
- ENDIF
- IF bi%*3>65000
- ALERT 3," ZU VIELE FELDELEMENTE ZUR | BERECHNUNG DER HÜLLKURVE | VORERST NUR ... ",1," ABBRUCH ",but%
- GOTO huellend
- ENDIF
- simsw#=bi%*sw#/auf#
- DIM einh#(1,bi%)
- ENDIF
- ppg#=auf#/sw#
- IF halbwert#*ppg#<1.8
- ALERT 3," DAS WIRD SO NIX! | MAL HÖHERE AUFLÖßUNG NEHMEN | BZW. KLEINERE SWEEP-WIDTH ",1," ABBRUCH ",button%
- ERASE einh#()
- GOTO huellend
- ENDIF
- IF kurve%=1
- IF simgauss%=1
- prol#=0
- GOSUB zeichnung
- GOTO huellend
- ENDIF
- GOSUB gauss_lorentz
- ENDIF
- IF kurve%=2
- IF simlorentz%=1
- prol#=1
- GOSUB zeichnung
- GOTO huellend
- ENDIF
- GOSUB gauss_lorentz
- ENDIF
- IF kurve%=3
- IF simgauss_lorentz%=1
- ALERT 2," | NEUE KURVE BERECHNEN ? ",2," NEIN | JA ",butt%
- IF butt%=1
- prol#=proz#
- GOSUB zeichnung
- GOTO huellend
- ENDIF
- ENDIF
- IF simgauss%=0
- GOSUB gauss_lorentz
- ENDIF
- CLS
- IF f_ormstupid!=TRUE
- GOTO stupidlorentz
- ENDIF
- DEFTEXT 1,0,0,13
- PRINT AT(30,12);
- INPUT "% Lorentz: ",prol#
- stupidlorentz:
- prol#=prol#/100
- proz#=prol#
- prog#=1-prol#
- l%=0
- DO
- huelk%(2,l%)=huelk%(0,l%)*prog#+huelk%(1,l%)*prol#
- huelk%(2,bi%-l%)=-huelk%(2,l%)
- INC l%
- EXIT IF l%>spekha%
- LOOP
- simgauss_lorentz%=1
- GOSUB zeichnung
- GOTO huellend
- ENDIF
- '
- GOSUB zeichnung
- huellend:
- RETURN
- '
- '
- PROCEDURE gauss_lorentz ! Berechnung der Hüllkurve
- LOCAL l%,m#,max%,start%,sta#,beenden%,p#,bo#,di#,qdi#,wure#,bereich#
- LOCAL wert#,n%,maxgau%,maxlor%,normbereich#,feldanfang#,mg#,ml#
- LOCAL feld#
- gpp#=sw#/auf#
- wure#=SQR(EXP(1))
- normbereich#=halbwert#*20
- bereich#=hy#(b#)-hy#(1)+normbereich#
- spekha%=bi%/2
- IF bereich#>sw#
- feldanf#=centerfield#-bereich#/2
- ELSE
- feldanf#=centerfield#-sw#/2
- ENDIF
- l%=0
- m#=0
- max%=INT(normbereich#*ppg#)
- CLS
- DEFTEXT 1,0,0,13
- PRINT AT(10,15);"Nur Geduld, Rom wurde auch nicht an einem"
- PRINT AT(10,17);"Tag erbaut.................."
- DO
- INC m#
- sta#=(hy#(m#)-feldanf#-normbereich#/2)*ppg#
- start%=INT(sta#)
- beenden%=start%+max%
- IF start%<l% OR start%=l%
- start%=l%
- ENDIF
- IF beenden%>spekha%
- beenden%=spekha%
- ENDIF
- IF start%<spekha%
- FOR l%=start% TO beenden%
- p#=m#
- feld#=feldanf#+gpp#*l%
- schleife:
- h%=FIX(hy#(p#)*ppg#+0.5)
- bo#=h%*gpp#
- di#=(feld#-bo#)/halbwert#
- qdi#=di#*di#
- qa#=(1+4*qdi#/3)^2
- wert#=wure#*di#*EXP(-2*qdi#)
- einh#(0,l%)=einh#(0,l%)+wert#*intensi#(p#)
- einh#(1,l%)=einh#(1,l%)+16/9*di#/qa#*intensi#(p#)
- IF p#<b#
- INC p#
- IF (hy#(p#)-halbwert#*10)<=feld#
- GOTO schleife
- ENDIF
- ENDIF
- p#=m#
- links:
- IF p#>=2
- DEC p#
- IF (hy#(p#)+halbwert#*10)>=feld#
- h%=FIX(hy#(p#)*ppg#+0.5)
- bo#=h%*gpp#
- di#=(feld#-bo#)/halbwert#
- qdi#=di#*di#
- qa#=(1+4*qdi#/3)^2
- wert#=wure#*di#*EXP(-2*qdi#)
- einh#(0,l%)=einh#(0,l%)+wert#*intensi#(p#)
- einh#(1,l%)=einh#(1,l%)+16/9*di#/qa#*intensi#(p#)
- ENDIF
- GOTO links
- ENDIF
- NEXT l%
- ELSE
- l%=start%
- ENDIF
- EXIT IF l%>=spekha%
- LOOP
- PRINT AT(20,20);"...aber an einem Tag abgebrannt!"
- l%=0
- DIM huelk%(2,bi%)
- DO
- huelk%(0,l%)=CINT(einh#(0,l%)*1E+06)
- IF ABS(huelk%(0,l%))>maxgau%
- maxgau%=ABS(huelk%(0,l%))
- ENDIF
- huelk%(1,l%)=CINT(einh#(1,l%)*1E+06)
- IF ABS(huelk%(1,l%))>maxlor%
- maxlor%=ABS(huelk%(1,l%))
- ENDIF
- INC l%
- EXIT IF l%>spekha%
- LOOP
- mg#=1E+06/maxgau%
- ml#=1E+06/maxlor%
- l%=0
- DO
- huelk%(0,l%)=CINT(huelk%(0,l%)*mg#)
- huelk%(0,bi%-l%)=-huelk%(0,l%)
- huelk%(1,l%)=CINT(huelk%(1,l%)*ml#)
- huelk%(1,bi%-l%)=-huelk%(1,l%)
- INC l%
- EXIT IF l%>spekha%
- LOOP
- huelk%(0,spekha%)=0
- huelk%(1,spekha%)=0
- ERASE einh#()
- simgauss%=1
- simlorentz%=1
- RETURN
- '
- PROCEDURE zeichnung ! Zeichnen der Hüllkurve
- MENU OFF
- CLS
- simess!=0
- halb!=0
- DEFLINE 1,1
- LOCAL fa#,anf#
- IF ver#=0
- ver#=1
- ENDIF
- IF sweep#=0
- sweep#=sw#
- ENDIF
- amb#=ROUND(0,2)
- mb#=ROUND(sweep#,2)
- BOX 27,60,613,360
- DEFLINE 1,1,0,0
- LINE 27,360,27,365
- LINE 321,360,321,365
- LINE 613,360,613,365
- DEFTEXT 1,0,0,6
- PRINT AT(3,2);"Filename: ";finame$;
- PRINT AT(40,2);"Auflösung: ";auf#;
- PRINT AT(3,5);"Simulierte Sweep Width :";sw#;
- PRINT AT(40,5);"Halbwertsbreite: ";halbwert#
- PRINT AT(60,2);" % Lorentz: ";prol#*100;
- PRINT AT(3,80);amb#;
- PRINT AT(40,80);mb#*0.5;
- PRINT AT(75,80);mb#;
- fa#=586/sweep#
- IF sweep#>=simsw#
- fak#=fa#*simsw#/bi%
- start%=CINT((sweep#-simsw#)/2*fa#+27)
- anfang%=0
- ende%=bi%
- ELSE
- anf#=sweep#/2*ppg#+0.5
- anfang%=spekha%-CINT(anf#)
- ende%=spekha%+CINT(anf#)
- fak#=586/(ende%-anfang%)
- start%=27
- ENDIF
- GOSUB pinsel
- MENU 27,3
- MENU 28,3
- spektrum!=FALSE
- huell!=TRUE
- MENU 35,3
- MENU 36,3
- MENU 37,3
- MENU 31,3
- MENU 38,3
- IF mess!=-1
- MENU 44,3
- ENDIF
- bereichsplott!=FALSE
- simm!=-1
- messplo!=0
- zeichnungende:
- HIDEM
- SGET x1$
- SHOWM
- DEFLINE 1,1,0,0
- RETURN
- '
- '
- '
- ' *********VERGRÖßEREUNG D.H. AUSSCHNITT *******************
- '
- PROCEDURE bereich
- MENU OFF
- LOCAL maus%,key$,x1#,x2#,g1#,g2#,gaus1#,gaus2#,bereich%,li%,re%,lix#,rex#
- LOCAL l%
- CLS
- simess!=0
- halb!=0
- DEFLINE 1,1,0,0
- IF bereichsplott!=FALSE
- bereichshalbe%=spekha%
- sweepbereich#=sweep#
- GOSUB zeichnung
- g1#=0
- g2#=0
- ELSE
- GOSUB pinsel
- BOX 27,60,613,360
- LINE 27,360,27,365
- LINE 321,360,321,365
- LINE 613,360,613,365
- DEFTEXT 1,0,0,6
- PRINT AT(3,2);"Filename: ";finame$;
- PRINT AT(40,2);"Auflösung: ";auf#;
- PRINT AT(3,5);"Simulierte Sweep Width :";sw#;
- PRINT AT(40,5);"Halbwertsbreite: ";halbwert#;
- PRINT AT(60,2);" % Lorentz: ";prol#*100;
- PRINT AT(3,80);amb#;
- PRINT AT(35,80);ROUND(mb#-amb#,2);" GAUSS ";
- PRINT AT(74,80);mb#;
- HIDEM
- SGET x1$
- SHOWM
- ENDIF
- g1#=amb#
- g2#=mb#
- bereichanfang:
- p_line!=FALSE
- SPUT x1$
- BOX 580,35,613,55
- DEFTEXT 1,1,0,13
- TEXT 583,50,25,"ESC"
- DEFTEXT 1,1,0,6
- DO
- key$=INKEY$
- IF key$=CHR$(27)
- maus%=3
- ENDIF
- IF key$=CHR$(127)
- maus%=2
- ENDIF
- IF MOUSEK>0
- maus%=1
- ENDIF
- IF MOUSEX>580 AND MOUSEY>35
- IF MOUSEX<613 AND MOUSEY<55 AND MOUSEK>0
- maus%=3
- ENDIF
- ENDIF
- EXIT IF maus%>0
- key$=""
- LOOP
- IF maus%=3
- GOTO bereichende
- ENDIF
- IF maus%=2
- bereichshalbe%=spekha%
- sweepbereich#=sweep#
- CLS
- GOSUB zeichnung
- g1#=0
- g2#=0
- ENDIF
- HIDEM
- SGET x1$
- SHOWM
- DEFLINE 2,1,1,1
- SETMOUSE 321,200,0
- icks1:
- DO !Abfrage der linken Grenze
- SPUT x1$
- x1#=MOUSEX
- li%=MOUSEX-27
- IF li%<0
- li%=0
- ENDIF
- IF li%>586
- li%=586
- ENDIF
- lix#=ROUND(((mb#-amb#)/586*li%)+amb#,2)
- PRINT AT(4,7);lix#
- COLOR 1
- LINE x1#,60,x1#,360
- PAUSE 5
- IF MOUSEK=1
- COLOR 1
- LINE x1#,60,x1#,360
- lin#=1
- HIDEM
- SGET x1$
- SHOWM
- ENDIF
- EXIT IF lin#=1
- LOOP
- IF x1#<27 OR x1#>613
- GOTO icks1
- ENDIF
- icks2:
- maus%=0
- DO !Abfrage der rechten Grenze
- SPUT x1$
- x2#=MOUSEX
- re%=MOUSEX-27
- IF re%<0
- re%=0
- ENDIF
- IF re%>586
- re%=586
- ENDIF
- rex#=ROUND(((mb#-amb#)/586*re%)+amb#,2)
- PRINT AT(14,7);rex#;
- PRINT AT(24,7);ROUND(rex#-lix#,2);
- COLOR 1
- LINE x2#,60,x2#,360
- PAUSE 5
- COLOR 1
- IF MOUSEK=2
- LINE x2#,60,x2#,360
- lin#=2
- ENDIF
- EXIT IF lin#=2
- LOOP
- IF x1#=x2#
- GOTO icks2
- ENDIF
- IF x2#<x1# OR x2#>614
- GOTO icks2
- ENDIF
- '
- gaus1#=((x1#-27)*sweepbereich#/586)
- gaus2#=((x2#-27)*sweepbereich#/586)
- '
- la%=CINT(bereichshalbe%-(sweepbereich#/2-gaus1#)*ppg#)
- le%=CINT(bereichshalbe%-(sweepbereich#/2-gaus2#)*ppg#)
- bereich%=le%-la%
- fak#=586/bereich%
- bereichshalbe%=bereich%/2+la%
- sweepbereich#=gaus2#-gaus1#
- g1#=gaus1#+g1#
- g2#=g1#+sweepbereich#
- halbe#=(g2#-g1#)*0.5+g1#
- mb#=ROUND(g2#,2)
- amb#=ROUND(g1#,2)
- fhalbe#=ROUND(halbe#,2)
- '
- CLS
- DEFLINE 1,1,0,0
- BOX 27,60,613,360
- LINE 27,360,27,365
- LINE 321,360,321,365
- LINE 613,360,613,365
- DEFTEXT 1,0,0,6
- PRINT AT(3,2);"Filename: ";finame$;
- PRINT AT(40,2);"Auflösung: ";auf#;
- PRINT AT(3,5);"Simulierte Sweep Width :";sw#;
- PRINT AT(40,5);"Halbwertsbreite: ";halbwert#;
- PRINT AT(60,2);" % Lorentz: ";prol#*100;
- PRINT AT(3,80);amb#;
- PRINT AT(35,80);ROUND(mb#-amb#,2);" GAUSS";
- PRINT AT(74,80);mb#;
- '
- IF la%>bi%
- p_line!=-1
- ENDIF
- IF la%<0 OR la%=0
- anfang%=0
- start%=CINT(ABS(la%*fak#)+27)
- ENDIF
- IF la%>0
- anfang%=la%
- start%=27
- ENDIF
- IF le%<0 OR le%=0
- p_line!=TRUE
- ELSE
- IF le%>bi%
- ende%=bi%
- ELSE
- ende%=le%
- ENDIF
- ENDIF
- '
- GOSUB pinsel
- HIDEM
- SGET x1$
- SHOWM
- GOTO bereichanfang
- '
- bereichende:
- DEFFILL 0,0
- PBOX 579,34,614,56
- SGET x1$
- huell!=FALSE
- bereichsplott!=TRUE
- messplo!=0
- DEFLINE 1,1,0,0
- RETURN
- '
- PROCEDURE pinsel
- hoehe#=150/1E+06
- IF simess!=-1
- DEFLINE defl%,1,0,0
- ELSE
- DEFLINE 1,1,0,0
- ENDIF
- IF p_line!=-1
- LINE 27,210+offset%,613,210+offset%
- gerade!=-1
- ELSE
- gerade!=0
- DRAW 27,210+offset%
- DRAW TO start%,210+offset%
- '
- FOR l%=anfang% TO ende%
- x%=(l%-anfang%)*fak#+start%
- y%=210+offset%+huelk%(kurve%-1,l%)*hoehe#*ver#
- IF halb!=-1
- IF y%<210
- y%=210
- ENDIF
- ENDIF
- IF y%>360
- y%=360
- ENDIF
- IF y%<60
- y%=60
- ENDIF
- DRAW TO x%,y%
- NEXT l%
- DRAW TO 613,210+offset%
- ENDIF
- DEFLINE 1,1,0,0
- IF simess!=-1
- HIDEM
- SGET x1$
- SHOWM
- ENDIF
- RETURN
- ' **************EIN-UND AUSGABE ÜBER DISKETTE *************
- PROCEDURE lese ! Daten Einlesen
- MENU OFF
- '
- LOCAL wahl$,bakl%,l$
- l$=CHR$(GEMDOS(25)+65)
- FILESELECT l$+":\DATEN\*.*","",wahl$
- IF wahl$=""
- GOTO leseende
- ENDIF
- IF EXIST(wahl$)
- ERASE ag#()
- ERASE ag1#()
- ERASE hy#()
- ERASE at$()
- ERASE intensi#()
- ERASE huelk%()
- DEFTEXT 1,17,0,17
- TEXT 150,150,300,"BIN BEIM LESEN "
- VOID FRE(0) ! Wegen der Müllabfuhr!
- OPEN "I",#1,wahl$
- WHILE NOT EOF(#1)
- INPUT #1,nika%
- INPUT #1,auf#,auf1#,sw#,sw1#,halbwertsbreite#,halbwert#
- INPUT #1,b#,sweep#,intmin#,intmax#,centerfield#
- DIM ag#(nika%,2),ag1#(nika%,2),at$(nika%,2)
- DIM hy#(b#)
- DIM intensi#(b#)
- BGET #1,VARPTR(ag#(0,0)),DIM?(ag#())*8
- BGET #1,VARPTR(hy#(0)),DIM?(hy#())*8
- BGET #1,VARPTR(intensi#(0)),DIM?(intensi#())*8
- '
- INPUT #1,simgauss%,simlorentz%,simgauss_lorentz%,bi%,simstick%,spekha%,proz#
- INPUT #1,simsw#
- DIM huelk%(2,bi%)
- BGET #1,VARPTR(huelk%(0,0)),DIM?(huelk%())*4
- WEND
- CLOSE
- MENU 17,3
- MENU 22,3
- MENU 23,3
- ' +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- bakl%=RINSTR(wahl$,"\")
- finame$=MID$(wahl$,bakl%+1)
- ' +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- '
- GOTO leseende
- ENDIF
- ALERT 1," DATEI IST NICHT | | VORHANDEN !",1," KLAR ? ",but%
- '
- leseende:
- CLS
- '
- RETURN
- '
- PROCEDURE schreibe ! Daten auf Disk. schreiben
- MENU OFF
- '
- LOCAL wahl$,l$
- IF simkurve%=0
- IF simstick%=0
- GOTO schreibende
- ENDIF
- ENDIF
- l$=CHR$(GEMDOS(25)+65)
- FILESELECT l$+":\DATEN\*.*",finame$,wahl$
- IF wahl$=""
- GOTO schreibende
- ENDIF
- IF EXIST(wahl$)
- ALERT 1," DATEI EXISTIERT SCHON ! | ACHTUNG ! | DIE DATEI WIRD ÜBERSCHRIEBEN !",1," ABBRUCH | WEITER ",buton%
- IF buton%=1
- GOTO schreibende
- ENDIF
- ENDIF
- DEFTEXT 1,17,0,17
- TEXT 150,150,300,"BIN BEIM SCHREIBEN "
- VOID FRE(0) ! wegen der Müllabfuhr !
- OPEN "O",#1,wahl$
- WRITE #1,nika%
- WRITE #1,auf#,auf1#,sw#,sw1#,halbwertsbreite#,halbwert#
- WRITE #1,b#,sweep#,intmin#,intmax#,centerfield#
- BPUT #1,VARPTR(ag#(0,0)),DIM?(ag#())*8
- BPUT #1,VARPTR(hy#(0)),DIM?(hy#())*8
- BPUT #1,VARPTR(intensi#(0)),DIM?(intensi#())*8
- '
- WRITE #1,simgauss%,simlorentz%,simgauss_lorentz%,bi%,simstick%,spekha%,proz#
- WRITE #1,simsw#
- BPUT #1,VARPTR(huelk%(0,0)),DIM?(huelk%())*4
- CLOSE
- '
- schreibende:
- CLS
- RETURN
- '
- PROCEDURE loesche ! Der Name sagt alles
- LOCAL wahl$,l$,button%,but%
- MENU OFF
- l$=CHR$(GEMDOS(25)+65)
- FILESELECT l$+":\DATEN\*.*","",wahl$
- IF wahl$=""
- GOTO loeschende
- ENDIF
- DEFTEXT 1,0,0,13
- IF EXIST(wahl$)
- ALERT 3," SOLL DIE DATEI | | | WIRKLICH GELÖSCHT WERDEN? ",1," NEIN | JA ",button%
- IF button%=2
- KILL wahl$
- ENDIF
- GOTO loeschende
- ENDIF
- ALERT 1," DATEI IST NICHT | | VORHANDEN !",1," KLAR ? ",but%
- loeschende:
- RETURN
- '
- ' *************************************************************************
- PROCEDURE namensgebung ! Filename
- MENU OFF
- DEFTEXT 1,0,0,13
- BOX 180,175,380,200
- PRINT AT(25,12);"Filename: ________.___"
- PRINT AT(35,12);
- FORM INPUT 12 AS finame$
- RETURN
- '
- '
- PROCEDURE fehlerbehandlung ! Versuch um Fehler abzufangen
- CLS
- LOCAL bott%,bottom%,butt%,fehler$
- DEFTEXT 1,1,0,13
- fehler$=STR$(ERR)
- IF ERR<101
- IF ERR=37
- CLOSE
- IF f_ormstupid!=TRUE
- ALERT 1," Disk hat zuwenig Speicher ! | Also nochmal Eintippen! | (Ich hab ja gewarnt!!) | Aber erstmal weiter!",1," TJAAA.. ",bott%
- IF bott%=1
- RESUME rettung
- ENDIF
- ELSE
- ALERT 1," Diskette hat zu- | wenig Speicherplatz! ",1," KO? ",bottom%
- IF bottom%=1
- RESUME neustart
- ENDIF
- ENDIF
- ENDIF
- IF ERR=22
- CLOSE
- RESUME neustart
- ENDIF
- ALERT 2," ÄCHZ! FEHLER "+fehler$+" | IST AUFGETRETEN | NOCH MAL PROBIEREN ? ",1," JA ! | LMAA ! ",butt%
- IF butt%=1
- RESUME neustart
- ELSE
- CLS
- DEFTEXT 1,16,0,26
- PRINT AT(10,20);" NA GOTT SEI DANK !"
- END
- ENDIF
- ENDIF
- RETURN
- '
- '
- '
- PROCEDURE robot ! Sogenannte Autosimulationsroutine
- LOCAL maus%,s_stop%,korr%
- MENU OFF
- DEFTEXT 1,0,0,13
- IF rettung!=-1
- GOTO sichern
- ENDIF
- ' **********************************************************************************
- GOSUB datenordner
- ' *****************************************************************************`
- diskfrei%=DFREE(0)
- ' **************************** WIRD AUSDRUCK GEWÜNSCHT ? ***********
- ALERT 2," | MIT GLEICHZEITIGEM | AUSDRUCK ? ",1," KLARO | NEEE ",dr%
- IF dr%=1
- druck!=TRUE
- ALERT 2," | AUSDRUCK MIT | PARAMETER ? ",1," NA KLAR | QUATSCH ",par%
- IF par%=1
- daten!=TRUE
- ELSE
- daten!=FALSE
- ENDIF
- ELSE
- druck!=FALSE
- ENDIF
- ALERT 2," | MIT GLEICHZEITIGEM | ABSPEICHERN DER | SPEKTREN ? ",2," SICHER | UNSINN",speicher%
- ' ********************************************************************
- IF finame$=""
- finame$="Unfug"
- ENDIF
- DEFTEXT 1,0,0,13
- BOX 180,175,380,200
- PRINT AT(25,12);"Filename: ______"
- PRINT AT(35,12);
- FORM INPUT 6 AS finame$
- zaehl$=finame$
- CLS
- f_ormstupid!=TRUE
- simu_eingabe:
- laufwerk%=GEMDOS(25)
- IF BIOS(&H9,laufwerk%)>0
- CHDIR "\"
- IF 0<>FSFIRST("daten",-1) !Ist Ordner Daten vorhanden?
- MKDIR "DATEN"
- ENDIF
- diskfrei%=DFREE(0)
- CHDIR "DATEN"
- ENDIF
- DEFTEXT 1,8,0,18
- PRINT AT(10,5);
- INPUT " Anzahl der simulationen:";simu%
- CLS
- IF speicher%=1
- DEFTEXT 1,1,0,13
- IF diskfrei%<simu%*50000
- PRINT AT(10,5);"Achtung die Diskette hat nur ";diskfrei%;" Bytes Speicherplatz !";
- PRINT AT(10,8);" Das könnte knapp werden !!!! ";
- PRINT AT(10,11);"Besser ist es eine neue Diskette zu verwenden oder die ";
- PRINT AT(10,14);" Zahl der Simulationen entsprechend zu verringern";
- BOX 100,320,200,360
- BOX 450,320,550,360
- TEXT 120,340,"NA KLAR"
- TEXT 470,340,"Risiko"
- maus%=0
- DO
- IF MOUSEY>320 AND MOUSEY<360
- IF MOUSEX>100 AND MOUSEX<200 AND MOUSEK=1
- maus%=1
- ENDIF
- IF MOUSEX>450 AND MOUSEX<550 AND MOUSEK=1
- maus%=2
- ENDIF
- ENDIF
- EXIT IF maus%>0
- LOOP
- IF maus%=1
- CLS
- GOTO simu_eingabe
- ENDIF
- IF maus%=2
- CLS
- TEXT 250,50,"Eigenes Risiko!"
- ENDIF
- ENDIF
- ENDIF
- '
- '
- IF speicher%=2
- DEFTEXT 1,1,0,13
- IF diskfrei%<simu%*1024
- PRINT AT(10,5);"Achtung die Diskette hat nur ";diskfrei%;" Bytes Speicherplatz !";
- PRINT AT(10,8);" Das wird nicht reichen !!!! ";
- PRINT AT(10,11);"Besser ist es eine neue Diskette zu verwenden oder die ";
- PRINT AT(10,14);" Zahl der Simulationen entsprechend zu verringern";
- BOX 100,320,200,360
- BOX 450,320,550,360
- TEXT 120,340,"NA KLAR"
- TEXT 470,340,"Risiko"
- maus%=0
- DO
- IF MOUSEY>320 AND MOUSEY<360
- IF MOUSEX>100 AND MOUSEX<200 AND MOUSEK=1
- maus%=1
- ENDIF
- IF MOUSEX>450 AND MOUSEX<550 AND MOUSEK=1
- maus%=2
- ENDIF
- ENDIF
- EXIT IF maus%>0
- LOOP
- IF maus%=1
- CLS
- GOTO simu_eingabe
- ENDIF
- IF maus%=2
- CLS
- TEXT 200,50,200,"NICHT ZU VIEL RISIKO!"
- PAUSE 60
- GOTO simu_eingabe
- ENDIF
- ENDIF
- ENDIF
- '
- '
- '
- '
- IF simu%=0
- GOTO robotende
- ENDIF
- ERASE quark$()
- ERASE auswahl$()
- IF simstick%=1 OR simgaus%=1
- ERASE hy#()
- ERASE intensi#()
- ERASE huelk%()
- ENDIF
- DIM quark$(simu%),auswahl$(simu%)
- FOR simulat%=1 TO simu%
- quark$(simulat%)="init"+STR$(simulat%)
- '
- korrektur:
- '
- DEFTEXT 1,0,0,13
- PRINT AT(15,5);" DATENSATZ NUMMER : ";simulat%;" - VON - ";simu%;" - SIMULATIONEN";
- '
- GOSUB atom
- '
- GOSUB eingabe
- '
- IF simulat%=1
- auf#=1024
- auf1#=1024
- sw#=50
- sw1#=50
- halbwert#=0.2
- halbwertsbreite#=0.2
- ENDIF
- '
- GOSUB spektrenparameter
- '
- CLS
- DEFTEXT 1,8,0,18
- PRINT AT(14,5);"Auswahl der Hüllkurvenform";
- TEXT 120,180,"GAUß"
- TEXT 240,180,"LORENTZ"
- TEXT 350,180,"GAUß/LORENTZ"
- BOX 100,150,500,200
- kurve%=0
- DO
- IF MOUSEY>150 AND MOUSEY<200
- IF MOUSEX<180 AND MOUSEX>100 AND MOUSEK=1
- kurve%=1
- prol#=0
- ENDIF
- IF MOUSEX<320 AND MOUSEX>230 AND MOUSEK=1
- kurve%=2
- prol#=1
- ENDIF
- IF MOUSEX<500 AND MOUSEX>350 AND MOUSEK=1
- kurve%=3
- ENDIF
- ENDIF
- EXIT IF kurve%>0
- LOOP
- CLS
- IF kurve%=3
- CLS
- PRINT AT(17,5);" Gauß-Lorentz-Kurve";
- PRINT AT(17,8);" Eingabe in Prozent";
- PRINT AT(20,11);
- INPUT "% Lorentz= ";prol#
- IF prol#>100
- prol#=100
- ENDIF
- IF prol#<0
- prol#=0
- ENDIF
- ENDIF
- CLS
- '
- ALERT 2," | | EINGABE IN ORDNUNG ? ",1," SICHER | ÄÄHH | ABBRUCH ",korr%
- IF korr%=2
- GOTO korrektur
- ENDIF
- IF korr%=3
- ALERT 2," | WIRKLICH DIE AUTO- | SIMULATION BEENDEN ? ",1," NEIN | JA DOCH ",abb%
- IF abb%=2
- s_top%=simulat%-1
- simulat%=simu%
- simu%=s_top%
- GOTO abbruch
- ENDIF
- ENDIF
- '
- OPEN "O",#1,quark$(simulat%)
- WRITE #1,nika%
- WRITE #1,auf#,auf1#,sw#,sw1#,halbwertsbreite#,halbwert#
- FOR j%=1 TO nika%
- WRITE #1,ag#(j%,0),ag#(j%,1),ag#(j%,2)
- NEXT j%
- WRITE #1,kurve%,prol#
- CLOSE
- abbruch:
- NEXT simulat%
- IF simu%=0
- GOTO robotende
- ENDIF
- '
- sichern:
- FOR simulat%=1 TO simu%
- IF rettung!=-1
- GOTO rettungs_schrieb
- ENDIF
- ERASE ag#()
- ERASE ag1#()
- ERASE at$()
- datei!=EXIST(quark$(simulat%))
- IF datei!=FALSE
- CHDIR "\"
- ENDIF
- datei!=EXIST(quark$(simulat%))
- IF datei!=FALSE
- CHDIR "\DATEN"
- ENDIF
- IF EXIST(quark$(simulat%))=FALSE
- PRINT "VERDAMMTE SCHEIßE"
- END
- ENDIF
- OPEN "I",#1,quark$(simulat%)
- WHILE NOT EOF(#1)
- INPUT #1,nika%
- INPUT #1,auf#,auf1#,sw#,sw1#,halbwertsbreite#,halbwert#
- DIM ag#(nika%,2),ag1#(nika%,2),at$(nika%,2)
- FOR j%=1 TO nika%
- INPUT #1,ag#(j%,0),ag#(j%,1),ag#(j%,2)
- NEXT j%
- INPUT #1,kurve%,prol#
- WEND
- CLOSE
- '
- auswahl$(simulat%)=zaehl$+STR$(simulat%)
- finame$=auswahl$(simulat%)
- '
- GOSUB hyper
- '
- GOSUB linienform
- '
- rettungs_schrieb:
- IF speicher%=1
- VOID FRE(0)
- OPEN "O",#1,auswahl$(simulat%)
- WRITE #1,nika%
- WRITE #1,auf#,auf1#,sw#,sw1#,halbwertsbreite#,halbwert#
- WRITE #1,b#,sweep#,intmin#,intmax#,centerfield#
- BPUT #1,VARPTR(ag#(0,0)),DIM?(ag#())*8
- BPUT #1,VARPTR(hy#(0)),DIM?(hy#())*8
- BPUT #1,VARPTR(intensi#(0)),DIM?(intensi#())*8
- WRITE #1,simgauss%,simlorentz%,simgauss_lorentz%,bi%,simstick%,spekha%,proz#
- WRITE #1,simsw#
- BPUT #1,VARPTR(huelk%(0,0)),DIM?(huelk%())*4
- CLOSE
- ENDIF
- IF EXIST(quark$(simulat%))
- KILL quark$(simulat%)
- ENDIF
- '
- IF druck!=TRUE ! ABFRAGE OB AUSDRUCK GEWÜNSCHT WIRD
- IF OUT?(0)=FALSE ! IST DRUCKER EINGESCHALTET ?
- ALERT 3," DRUCKER IST NICHT | EINGESCHALTET ! | EINSCHALTEN ODER OHNE | AUSDRUCK LEBEN ",1," IST EIN | OHNE ",frag%
- IF frag%=2
- druck!=FALSE
- GOTO druck_ende
- ENDIF
- ENDIF
- IF daten!=TRUE
- GOSUB datendruck
- ENDIF
- GOSUB hardcopy
- druck_ende:
- ENDIF
- '
- '
- IF simulat%<simu%
- ERASE hy#()
- ERASE intensi#()
- ERASE huelk%()
- CLR bi%,proz#,bildbereich#,b#,sw#,sweep#,auf#,auf1#,simgauss%,simlorentz%,simgauss_lorentz%
- ENDIF
- '
- rettung!=0
- '
- CLS
- DEFTEXT 1,0,0,13
- PRINT "Nächste simulation"
- '
- '
- '
- NEXT simulat%
- ERASE auswahl$()
- ERASE quark$()
- robotende:
- f_ormstupid!=FALSE
- CLS
- RETURN
- '
- rettung: ! Versuch um Daten vor dem Endgültigem Vergessen
- CLOSE #1 ! zu retten
- rettung!=-1
- anzahl%=simu%-simulat% ! Einlesen der Startdaten in den Arbeitsspeicher
- IF anzahl%>0
- DIM datensatz#(50,anzahl%)
- ARRAYFILL datensatz#(),-1
- simret%=0
- FOR i#=1 TO anzahl%
- k%=0
- INC simulat%
- INC simret%
- OPEN "i",#1,quark$(simulat%)
- WHILE NOT EOF(#1)
- INC k%
- INPUT #1,datensatz#(k%,simret%)
- WEND
- CLOSE
- KILL quark$(simulat%) ! Löschen des Startdaten -files
- NEXT i#
- ENDIF
- ALERT 1," DIESER FILE KANN | GERETTET WERDEN! | DAZU NEUE DISK EINLEGEN | UND WEITERMACHEN !",1," WEITER | ACHWAS ",was%
- IF was%=2
- GOTO neustart
- ENDIF
- was_soll_das:
- ALERT 2," | NEUE DISKETTE | EINGELEGT ?",1," NA KLAR ",d%
- IF BIOS(&H9,laufwerk%)=0
- GOTO was_soll_das
- ENDIF
- ALERT 2," | DISKETTE FORMATIEREN ?| ",2," JA | NEIN ",f%
- IF f%=1
- GOSUB format
- CHDIR "\"
- MKDIR "DATEN"
- ENDIF
- GOSUB datenordner
- '
- IF anzahl%>0 ! Start Datensatz auf neue Diskette schreiben
- simulat%=simu%-anzahl%
- FOR simret%=1 TO anzahl%
- INC simulat%
- OPEN "O",#1,quark$(simulat%)
- k%=1
- WHILE NOT datensatz#(k%,simret%)=-1
- WRITE #1,datensatz#(k%,simret%)
- INC k%
- WEND
- CLOSE
- NEXT simret%
- ENDIF
- '
- GOSUB robot ! Weiter gehts
- GOTO neustart
- '
- '
- '
- PROCEDURE format
- MENU OFF
- '
- ALERT 3," | SICHER, DAß DIESE | DISKETTE FORMATIERT | WERDEN SOLL ?",1," JA | ABBRUCH ",format%
- IF format%=2
- GOTO schluss
- ENDIF
- '
- puffer$=SPACE$(10000) ! PUFFER EINRICHTEN
- wort#=VARPTR(puffer$)
- '
- ' *********** EINGABE DER PARAMETER ********************
- '
- initialisierung:
- ALERT 2,"Anzahl der Tracks ?",2,"80|81|82",track%
- IF track%=2 THEN
- anz_track%=81
- ENDIF
- IF track%=1 THEN
- anz_track%=80
- ENDIF
- IF track%=3
- anz_track%=82
- ENDIF
- '
- ALERT 2,"Sektoren pro Track ?",1,"9|10|ABBRUCH",track%
- IF track%=2 THEN
- s.t#=10
- ENDIF
- IF track%=1
- s.t#=9
- ENDIF
- IF track%=3
- GOTO schluss
- ENDIF
- '
- ALERT 2,"Wie viele Seiten| formatieren ?",2,"Eine|Zwei|Keine",seiten#
- IF seiten#=3
- GOTO schluss
- ENDIF
- '
- ' *********** GRUNDPARAMETER SETZEN *****************
- '
- wert#=&HE5E5
- konst#=&H0
- r.folge#=1
- side#=0
- drive#=0
- '
- CLS
- DEFTEXT 1,0,0,26,
- '
- ' **** TRACK 1 SEITE 1 UND TRACK 1 SEITE 2 (NUR DOPPELS.) FORMAT ****
- '
- a#=XBIOS(10,L:wort#,L:0,drive#,s.t#,0,0,r.folge#,L:konst#,0)
- GOSUB auswertung
- IF seiten#=2
- a#=XBIOS(10,L:wort#,L:0,drive#,s.t#,0,1,r.folge#,L:konst#,0)
- GOSUB auswertung
- ENDIF
- '
- ' ********* ALLE ÜBRIGEN TRACKS FORMATIEREN ******************
- '
- FOR track%=1 TO anz_track%-1
- '
- seite_1_oder_seite_2_format:
- a#=XBIOS(10,L:wort#,L:0,drive#,s.t#,track%,side#,r.folge#,L:konst#,wert#)
- GOSUB auswertung
- IF seiten#=2
- side#=side# XOR 1 ! AUF ANDERE SEITE UMSCHALTEN
- IF side#=1
- GOTO seite_1_oder_seite_2_format
- ENDIF
- ENDIF
- NEXT track%
- '
- ' ********* BOOTSEKTOR ERSTELLEN *****************
- '
- a#=XBIOS(18,L:wort#,L:0,seiten#+1,0)
- '
- anz_sektoren%=anz_track%*s.t#*seiten#
- hi_byte%=anz_sektoren%/256
- low_byte%=anz_sektoren%-hi_byte%*256
- '
- POKE wort#+19,low_byte% ! GESAMMTANZAHL DER SEKTOREN DER DISK EINTRAGEN
- POKE wort#+20,hi_byte%
- '
- IF seiten#=1
- POKE wort#+21,&HF8 ! EINSEITIGE DISK
- ELSE
- POKE wort#+21,&HF9 ! DOPPELSEITIGE DISK
- ENDIF
- '
- POKE wort#+24,s.t# ! SEKTOREN PRO TRACK EINTRAGEN
- POKE wort#+25,0
- '
- ' **************** BOOTSEKTOR SCHREIBEN *************
- '
- a#=XBIOS(9,L:wort#,L:0,drive#,1,0,0,1)
- '
- ' *************** GRUNDEINTRÄGE DER FAT ERSTELLEN ************
- '
- LPOKE wort#,&HF7FFFF00
- FOR i#=3 TO 511
- POKE wort#+i#,0
- NEXT i#
- '
- ' ******* 1.FAT BEI EIN- UND ZWEISEITIGER DISK SCHREIBEN ********
- '
- anf_sek%=2
- anz_sek%=1
- track%=0
- a#=XBIOS(9,L:wort#,L:0,drive#,anf_sek%,track%,side#,anz_sek%)
- '
- ' ********* 2. FAT BEI EIN-UND ZWEISEITIGER DISK SCHREIBEN ******
- '
- anf_sek%=7
- a#=XBIOS(9,L:wort#,L:0,drive#,anf_sek%,track%,side#,anz_sek%)
- '
- schluss:
- RETURN
- ' *************** FEHLERAUSWERTUNG ***********************
- '
- PROCEDURE auswertung
- IF a#=0
- x%=CINT(3600/anz_track%)
- w%=x%*track%
- IF track%=anz_track%-1
- w%=3600
- ENDIF
- IF seiten#=2
- DEFFILL 1,2,9
- PCIRCLE 320,200,150,0,w%
- DEFFILL 1,2,19
- PCIRCLE 320,200,75,0,w%
- ELSE
- DEFFILL 1,2,1
- PCIRCLE 320,200,150,0,w%
- ENDIF
- ELSE
- alarm$="FEHLER AUF| |SEITE "+STR$(side#)+" TRACK "+STR$(track%)
- ALERT 1,alarm$,1," ABBRUCH | WEITER ",e%
- IF e%=1
- RESUME neustart
- ENDIF
- ENDIF
- RETURN
- '
- PROCEDURE hardcopy ! Der Name sagt auch schon alles
- LOCAL i%,l%,spek$
- IF OUT?(0)=FALSE ! übliche Überprüfungen
- ALERT 3," | DRUCKER BITTE | EINSCHALTEN ! ",1," JA JA | MOG NET ",soso%
- IF soso%=2
- GOTO copy_ende
- ENDIF
- ENDIF
- IF OUT?(0)=FALSE
- DEFTEXT 1,1,0,13
- PRINT AT(30,10);" WITZBOLD !!"
- PAUSE 30
- GOTO copy_ende
- ENDIF
- IF f_ormstupid!=FALSE
- ALERT 2," | AUSDRUCK MIT | PARAMETER ? ",1," NA KLAR | QUATSCH ",par%
- IF par%=1
- GOSUB datendruck
- ENDIF
- ENDIF
- DEFTEXT 1,17,0,17
- TEXT 150,150,300,"BIN BEIM DRUCKEN "
- MENU OFF ! Hardcopyrutine
- LPRINT CHR$(27);CHR$(108);CHR$(5); ! linker Rand
- LPRINT CHR$(27);CHR$(65);CHR$(8); ! Zeilenvorschub auf 8/60 Zoll
- FOR i%=1 TO 80
- spek$=""
- FOR l%=399 TO 0 STEP -1
- spek$=spek$+MID$(x1$,(l%*80)+i%,1)
- NEXT l%
- LPRINT CHR$(27);"*";CHR$(0);CHR$(144);CHR$(1);spek$
- NEXT i%
- LPRINT CHR$(13);
- LPRINT CHR$(12); ! Nächste Seite
- LPRINT CHR$(27);CHR$(64); ! DRUCKER RESET
- '
- DO
- EXIT IF OUT?(0)=TRUE
- LOOP
- '
- '
- copy_ende:
- CLS
- RETURN
- '
- PROCEDURE datendruck ! Ausdruck der Startdatensätze
- MENU OFF
- IF messplo!=-1
- DEFTEXT 1,17,0,17
- TEXT 50,100,500,"DIE SOLLTE MANN/FRAU SCHON HABEN ! "
- GOTO datendruckende
- ENDIF
- LPRINT CHR$(27);CHR$(108);CHR$(15); ! Linker Rand
- LPRINT CHR$(27);"E";
- LPRINT finame$
- LPRINT CHR$(27);"F";
- LPRINT CHR$(27);CHR$(74);CHR$(90); ! Zeilen vorschub
- LPRINT CHR$(27);CHR$(108);CHR$(15); ! Linker Rand
- LPRINT "Anzahl der unabhängigen Atome: ";
- LPRINT nika%;
- LPRINT CHR$(27);CHR$(74);CHR$(90); ! Zeilen vorschub
- LPRINT CHR$(27);CHR$(108);CHR$(15); ! Linker Rand
- LPRINT CHR$(27);CHR$(45);CHR$(1); ! Unterstrichen
- LPRINT "Kernparameter";
- LPRINT CHR$(27);CHR$(45);CHR$(0);
- LPRINT CHR$(27);CHR$(74);CHR$(50);
- LPRINT CHR$(27);CHR$(108);CHR$(15);
- FOR i#=1 TO nika%
- LPRINT "Atomgruppe: ",i#
- LPRINT CHR$(10);
- LPRINT "Kernspin : ",ag#(i#,0);
- LPRINT CHR$(10);
- LPRINT "Anzahl der Kerne: ",ag#(i#,1);
- LPRINT CHR$(10);
- LPRINT "Kopplungskonstante",ag#(i#,2),
- LPRINT CHR$(10);
- LPRINT "****************************************"
- LPRINT CHR$(10);
- NEXT i#
- LPRINT CHR$(27);CHR$(74);CHR$(90); !Zeilen vorschub
- LPRINT CHR$(27);CHR$(108);CHR$(15); !Linker Rand
- LPRINT "Sweep-width (in Gauss): ",sweep#
- LPRINT CHR$(10);
- LPRINT "Halbwertsbreite (in Gauss):",halbwert#,
- LPRINT CHR$(10);
- LPRINT "Auflösung (in Punkte): ",auf#
- LPRINT CHR$(10);
- LPRINT "Prozent Lorentzcharakter: ",prol#*100,
- LPRINT CHR$(12);
- '
- DO
- EXIT IF OUT?(0)=TRUE
- LOOP
- datendruckende:
- '
- RETURN
- '
- PROCEDURE spin ! Berechnung der nor -
- LOCAL atome%,anzahl%,aufspaltung%,zaehl%,max%,imax% ! mierten Intensitäten
- atome%=ag#(k%,1) ! für ungewöhnlich viele
- aufspaltung%=INT(ag#(k%,0)*2+1) ! Atome und "seltene"
- anzahl%=INT(ag#(k%,0)*2*ag#(k%,1)+1) ! Spinquantenzahlen
- DIM rechenfeld%(anzahl%),inten%(anzahl%)
- rechenfeld%(1)=1
- DO
- DEC atome%
- EXIT IF atome%<0
- ARRAYFILL inten%(),0
- zaehl%=0
- DO
- INC zaehl%
- FOR z%=zaehl% TO (aufspaltung%+zaehl%-1)
- IF z%<anzahl% OR z%=anzahl%
- ADD inten%(z%),rechenfeld%(zaehl%)
- ENDIF
- NEXT z%
- EXIT IF zaehl%=anzahl%
- LOOP
- SWAP rechenfeld%(),inten%()
- LOOP
- max%=INT(anzahl%/2+1)
- imax%=rechenfeld%(max%)
- FOR z%=1 TO anzahl%
- int#(k%,z%)=rechenfeld%(z%)/imax%
- NEXT z%
- ERASE rechenfeld%()
- ERASE inten%()
- RETURN
- '
- PROCEDURE aufblasen
- MENU OFF
- DEFTEXT 1,0,0,13
- PRINT AT(25,10);
- INPUT "VERGRÖßERUNGSFAKTOR: ";ver#
- ver#=ABS(ver#)
- PRINT ver#
- IF ver#=0
- ver#=1
- ENDIF
- GOSUB zeichnung
- RETURN
- '
- PROCEDURE hp7475a
- MENU OFF
- BOUNDARY 1
- LOCAL stil%,lin%,leng#,xin#,yin#,a#,a$,x1#,y1#,maus#,beenden!,yw%,penr%,pens%
- LOCAL butt%,antwort%,i%,z%,p1%,m_sweep#,s_sweep#
- m_sweep#=ROUND(mend#-manf#,2)
- s_sweep#=ROUND(mb#-amb#,2)
- IF simess!=-1
- z%=2
- ELSE
- z%=1
- ENDIF
- DO UNTIL i%=z%
- INC i%
- IF i%=2
- TEXT 460,80,penr%
- TEXT 460,230,pens%
- ENDIF
- stift:
- GRAPHMODE 2
- DEFFILL 1,2,1
- PBOX 300,20,360,50
- DEFFILL 1,0
- DEFTEXT 1,16,0,18
- TEXT 160,80,300,"STIFT FÜR DEN RAHMEN: "
- TEXT 160,230,300,"STIFT FÜR DAS SPEKTRUM: "
- DEFTEXT 1,0,0,15
- IF simess!=-1
- IF i%=1
- TEXT 110,43,170,"SIMULIERTES - "
- ELSE
- TEXT 100,43,"GEMESSENES - "
- ENDIF
- TEXT 400,43,170,"SPEKTRUM"
- ENDIF
- TEXT 315,43,30,"OK"
- '
- BOX 40,350,600,380
- TEXT 50,370,100,"LINIENFORM:"
- IF i%=1
- TEXT 350,370,"PATTERNLÄNGE:"
- lin%=0
- ENDIF
- xin#=30
- yin#=130
- a$="1"
- a#=1
- FOR i#=1 TO 6
- ADD xin#,80
- x1#=xin#
- y1#=yin#
- FOR d#=1 TO 2
- TEXT x1#+16,y1#+24,a$
- x2#=x1#+40
- y2#=y1#+40
- PBOX x1#,y1#,x2#,y2#
- y1#=yin#+150
- NEXT d#
- INC a#
- a$=STR$(a#)
- NEXT i#
- maus#=0
- GRAPHMODE 1
- DEFTEXT 1,16,0,18
- DEFLINE 1,1
- LINE 180,365,300,365
- DO
- IF INKEY$=CHR$(27)
- maus#=2
- beenden!=-1
- ENDIF
- IF INKEY$=CHR$(13)
- maus#=2
- ENDIF
- IF MOUSEK=1
- IF i%=1
- IF MOUSEY>350 AND MOUSEY<380 AND MOUSEX>350 AND MOUSEX<600
- INC leng#
- IF leng#>20
- leng#=1
- ENDIF
- PAUSE 10
- TEXT 500,370," "
- TEXT 500,370,STR$(leng#)
- ENDIF
- IF MOUSEY>350 AND MOUSEY<380 AND MOUSEX>180 AND MOUSEX<300
- INC lin%
- IF lin%>5
- lin%=0
- ENDIF
- IF lin%=0
- stil%=1
- ENDIF
- IF lin%=1
- stil%=3
- ENDIF
- IF lin%=2
- stil%=5
- ENDIF
- IF lin%=3
- stil%=2
- ENDIF
- IF lin%=4
- stil%=4
- ENDIF
- IF lin%=5
- stil%=6
- ENDIF
- TEXT 180,370,120," "
- DEFLINE stil%,1
- LINE 180,365,300,365
- DEFLINE 1,1,0,0
- PAUSE 10
- ENDIF
- ENDIF
- TEXT 460,80,penr%
- TEXT 460,230,pens%
- IF MOUSEY>130 AND MOUSEY<170
- yw%=1
- ENDIF
- IF MOUSEY>280 AND MOUSEY<320
- yw%=2
- ENDIF
- IF MOUSEX>110 AND MOUSEX<150
- IF yw%=1
- penr%=1
- ENDIF
- IF yw%=2
- pens%=1
- ENDIF
- ENDIF
- IF MOUSEX>190 AND MOUSEX<230
- IF yw%=1
- penr%=2
- ENDIF
- IF yw%=2
- pens%=2
- ENDIF
- ENDIF
- IF MOUSEX>270 AND MOUSEX<310
- IF yw%=1
- penr%=3
- ENDIF
- IF yw%=2
- pens%=3
- ENDIF
- ENDIF
- IF MOUSEX>350 AND MOUSEX<390
- IF yw%=1
- penr%=4
- ENDIF
- IF yw%=2
- pens%=4
- ENDIF
- ENDIF
- IF MOUSEX>430 AND MOUSEX<470
- IF yw%=1
- penr%=5
- ENDIF
- IF yw%=2
- pens%=5
- ENDIF
- ENDIF
- IF MOUSEX>510 AND MOUSEX<550
- IF yw%=1
- penr%=6
- ENDIF
- IF yw%=2
- pens%=6
- ENDIF
- ENDIF
- IF MOUSEX>300 AND MOUSEX<360 AND MOUSEY>20 AND MOUSEY<50
- maus#=2
- ENDIF
- ENDIF
- EXIT IF maus#=2
- LOOP
- IF z%=2 AND i%=1
- pr%=penr%
- ps1%=pens%
- ENDIF
- IF beenden!=-1
- GOTO hp_ende
- ENDIF
- rahmen_aus!=FALSE
- IF penr%=0
- ALERT 2," | KEINE BESCHRIFTUNG ??? ",1," HÄ ? | EIJO ! ",butt%
- IF butt%=1
- GOTO stift
- ELSE
- rahmen_aus!=TRUE
- ENDIF
- ENDIF
- IF pens%=0
- ALERT 2," | KEIN SPEKTRUM ?????? ",1," OHJE ! | JA | ???? ",butt%
- IF butt%=1
- GOTO stift
- ENDIF
- IF butt%=2
- ALERT 2," | SCHWABE ODER SCHOTTE ? ",2," SO ISSES | HANOI ",antwort%
- IF antwort%=2
- CLS
- TEXT 100,150,400," SELTSAM, SELTSAM........"
- PAUSE 120
- ENDIF
- ENDIF
- IF butt%=3
- ALERT 2," SIND SIE EIN | | ORGANIKER ? ",1," JA | NEIN ",antwort%
- CLS
- IF antwort%=1
- TEXT 100,150,400," DACHT ICH MIR DOCH GLEICH!"
- ELSE
- TEXT 100,150,400," HÄTTEN SIE ABER WERDEN KÖNNEN ! "
- ENDIF
- PAUSE 120
- ENDIF
- ENDIF
- IF penr%=0 AND pens%=0
- CLS
- TEXT 150,150,300,"GEIZHALS!!!!!"
- PAUSE 150
- CLS
- GOTO stift
- ENDIF
- '
- IF i%=1
- p1%=pens%
- ENDIF
- CLS
- LOOP
- ALERT 2," | PLOTTEN ?",1," EI JO | NEEEE ",butt%
- IF butt%=2
- GOTO hp_ende
- ENDIF
- TEXT 160,150,300,"Bin beim Plotten!"
- '
- OPEN "",#3,"AUX:"
- PRINT #3,"IN;"
- IF rahmen_aus!=FALSE
- GOSUB text
- DELAY 50
- GOSUB rahmen
- DELAY 80
- ENDIF
- GOSUB plott
- PRINT #3,"PU;SP0"
- PRINT #3,"DF"
- CLOSE #3
- hp_ende:
- CLS
- DEFLINE 1,1
- RETURN
- '
- PROCEDURE text
- prozl#=prol#*100
- PRINT #3,"SP";penr%;
- PRINT #3,"pa2000,7480;"
- PRINT #3,"CS0;SR3,3;"
- PRINT #3,"lbSYSIPHUS - PLOT";CHR$(3)
- PRINT #3,"Pa2020,7460;LbSYSIPHUS - PLOT";CHR$(3)
- PRINT #3,"PA600,7350,PD10600,7350,PU;"
- PRINT #3,"SR.7,1;"
- IF (bereichsplott! OR huell!) OR simess!
- PRINT #3,"PA2800,7200;LBSIMULIERTES SPEKTRUM: ";CHR$(3)
- IF lin%>0
- PRINT #3,"LT",lin%,leng#;
- ENDIF
- PRINT #3,"SP";p1%;"VS,2;"
- PRINT #3,"PA5500,7225,PD8000,7225,PU;"
- PRINT #3,"SP";penr%;
- PRINT #3,"LT,VS;";
- PRINT #3,"PA600,7050;LBFILENAME: ";finame$;CHR$(3)
- PRINT #3,"PA3800,7050;CS33;LBAUFL";CHR$(92);"SUNG: ";auf#;CHR$(3)
- PRINT #3,"PA7000,7050;LB%-LORENTZCHARAKTER: ";prozl#;CHR$(3)
- PRINT #3,"PA600,6925;CS0;LBHALBWERSTBREITE: ";halbwert#;CHR$(3)
- PRINT #3,"PA3800,6925;LBSIMULIERTE SWEEP-WEITE: ";sw#;CHR$(3)
- PRINT #3,"PA7000,6925;LBSWEEP-WEITE: ";s_sweep#;CHR$(3)
- DELAY 10
- ENDIF
- PRINT #3,"PA600,6775,PD10600,6775,PU;"
- IF messplo!=-1
- PRINT #3,"PA2800,6625;LBGEMESSENES SPEKTRUM: ";CHR$(3)
- PRINT #3,"sp",pens%;"VS,2;"
- PRINT #3,"PA5500,6650,PD8000,6650,PU;"
- PRINT #3,"sp";penr%;"VS;"
- PRINT #3,"PA600,6500;LBFILENAME: ";mess$;CHR$(3)
- PRINT #3,"PA3800,6500;LBRESOLUTION: ";res%;CHR$(3)
- PRINT #3,"PA7000,6500;LBCENTERFIELD: ";ROUND(cf#,2);CHR$(3)
- PRINT #3,"PA600,6375;LBGEMESSENE SWEEP-WEITE: ";spsw#;CHR$(3)
- PRINT #3,"PA7000,6375;LBSWEEP-WEITE: ";m_sweep#;CHR$(3)
- PRINT #3,"PA600,6225,PD10600,6225,PU;"
- DELAY 10
- ENDIF
- RETURN
- '
- PROCEDURE rahmen
- LOCAL l$,r$,mit$,s_sweep#,m_sweep#,lm$,rm$,mitm$,ls$,rs$,mits$
- s_sweep#=ROUND(mb#-amb#,2)
- m_sweep#=ROUND(mend#-manf#,2)
- '
- lm$=SPACE$(7)
- RSET lm$=STR$(ROUND(manf#,2))
- rm$=SPACE$(7)
- rm$=STR$(ROUND(mend#,2))
- mitm$=SPACE$(7)
- RSET mitm$=STR$(m_sweep#)
- l1$=STR$(ROUND(amb#,2))
- IF l1$="0"
- l1$="0.00"
- ENDIF
- ls$=l1$
- rs$=STR$(ROUND(mb#,2))
- mits$=STR$(s_sweep#)
- l$=SPACE$(7)
- mit$=SPACE$(7)
- r$=SPACE$(7)
- '
- PRINT #3,"PU,600,600,PD,600,5620,10600,5620,10600,600,600,600;"
- PRINT #3,"PU600,600,PD600,520,PU,5600,600,PD,5600,520,PU10600,600PD10600,520,PU;"
- IF simess!=-1
- PRINT #3,"PU600,5620,PD600,5700,PU,5600,5620,PD,5600,5700,PU10600,5620PD10600,5700,PU;"
- ENDIF
- IF simess!=-1
- RSET l$=ls$
- RSET mit$=mits$
- RSET r$=rs$
- ELSE
- IF messplo!=-1
- RSET l$=lm$
- RSET mit$=mitm$
- RSET r$=rm$
- ELSE
- RSET l$=ls$
- RSET r$=rs$
- RSET mit$=mits$
- ENDIF
- ENDIF
- PRINT #3,"PA80,380,LB"+l$;CHR$(3)
- PRINT #3,"PA4000,380,LBSWEEP-WEITE"+mit$+" GAUSS";CHR$(3)
- PRINT #3,"PA10100,380,LB"+r$;CHR$(3)
- IF simess!=-1
- PRINT #3,"PA80,5900,LB"+lm$;CHR$(3)
- PRINT #3,"PA4000,5800,LBSWEEP-WEITE"+mitm$+" GAUSS";CHR$(3)
- PRINT #3,"PA10100,5800,LB"+rm$;CHR$(3)
- ENDIF
- RETURN
- '
- PROCEDURE plott
- LOCAL x%,y%,app%,plo%,links%,vgl#,off%
- PRINT #3,"IP600,600,10600,5620;"
- IF simess!=-1
- IF halb!=-1
- vgl#=0.5
- off%=5000
- ELSE
- vgl#=1
- off%=0
- ENDIF
- ELSE
- vgl#=1
- off%=0
- ENDIF
- IF messplo!=-1
- PRINT #3,"SP";pens%;
- app%=mende%-mstart%+1
- PRINT #3,"SC1",app%,"-10010,10010;"
- PRINT #3,"PU,1,0;"
- PRINT #3,"PA",1,off%;
- IF mstart%<res%
- y%=mstart%
- DO
- INC x%
- IF y%<1
- plo%=0
- PRINT #3,"PU";
- plo%=off%
- ELSE
- PRINT #3,"PD";
- plo%=CINT(spek%(y%)*vgl#/100)+off%
- ENDIF
- IF plo%>10010
- plo%=10010
- ENDIF
- IF halb!=-1
- IF plo%<0
- plo%=0
- ENDIF
- ENDIF
- IF plo%<-10010
- plo%=-10010
- ENDIF
- PRINT #3,"PA",x%,plo%;
- DELAY 0.5
- IF y%=res%
- x%=app%
- ENDIF
- EXIT IF x%=app%
- INC y%
- LOOP
- PRINT #3,"PU;"
- ENDIF
- ENDIF
- '
- IF (huell! OR bereichsplott!) OR simess!
- IF lin%=0
- PRINT #3,"LT";
- ELSE
- PRINT #3,"LT",lin%,leng#;
- ENDIF
- PRINT #3,"SP";p1%;
- vgl#=ver#*vgl#
- off%=-off%
- app%=5860
- PRINT #3,"SC1",app%,"-10010,10010;"
- PRINT #3,"PU,1,0;"
- PRINT #3,"PA",1,off%,"PD;"
- IF gerade!=TRUE
- PRINT #3,"VS",2,";"
- PRINT #3,"PA",app%,off%;
- PRINT #3,"VS",";"
- ELSE
- xa%=(start%-27)*10
- IF xa%=0
- xa%=1
- ENDIF
- PRINT #3,"VS",1,";"
- PRINT #3,"PA",xa%,off%;
- PRINT #3,"VS",";"
- FOR y%=anfang% TO ende%
- x%=(y%-anfang%)*fak#*10+xa%
- plo%=CINT(-huelk%(kurve%-1,y%)*vgl#/100)+off%
- IF plo%>10010
- plo%=10010
- ENDIF
- IF halb!=-1
- IF plo%>0
- plo%=0
- ENDIF
- ENDIF
- IF plo%<-10010
- plo%=-10010
- ENDIF
- PRINT #3,"PA";x%,plo%;
- DELAY 0.5
- NEXT y%
- PRINT #3,"VS",1,";"
- PRINT #3,"PA",app%,off%;
- PRINT #3,"VS",";"
- ENDIF
- ENDIF
- '
- RETURN
- '
- PROCEDURE pixel
- MENU OFF
- LOCAL wahl$,c$,punkt%,d%,bakl%,button%,l$
- '
- IF messplo!=-1
- c$=mess$
- ELSE
- punkt%=RINSTR(finame$,".")
- bakl%=RINSTR(finame$,"\")
- d%=punkt%-bakl%-1
- IF d%<0
- d%=8
- ENDIF
- c$=MID$(finame$,bakl%+1,d%)
- ' +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ENDIF
- '
- pixelanf:
- l$=CHR$(GEMDOS(25)+65)
- '
- FILESELECT l$+":\*.PIC",c$+".PIC",wahl$
- IF wahl$>""
- IF EXIST(wahl$)
- ALERT 1," DATEI EXISTIERT SCHON ! | ACHTUNG ! | DIE DATEI WIRD ÜBERSCHRIEBEN !",1," ABBRUCH | WEITER ",buton%
- IF buton%=1
- GOTO pixelanf
- ENDIF
- ENDIF
- CLS
- SPUT x1$
- OPEN "O",#1,wahl$
- BPUT #1,XBIOS(2),32000
- CLOSE
- ENDIF
- RETURN
- '
- '
- PROCEDURE gwert
- MENU OFF
- LOCAL stand1$,stand2$,stand3$,b1$,b2$,b1#,b2#
- CLS
- DIM stand$(3)
- CHDIR "\"
- CHDIR "\DATEN"
- IF EXIST("G_WERT.PAR")
- OPEN "I",#1,"G_WERT.PAR"
- INPUT #1,wahl$
- INPUT #1,b1#,b2#
- CLOSE
- IF EXIST(wahl$)
- OPEN "I",#1,wahl$
- FOR i%=1 TO 3
- INPUT #1,stand$(i%)
- NEXT i%
- ENDIF
- CLOSE
- ENDIF
- GOSUB gwertbeschrift
- CLS
- ERASE stand$()
- RETURN
- PROCEDURE gwertbeschrift
- CLS
- stand1$=stand$(1)
- stand2$=stand$(2)
- stand3$=stand$(3)
- b1$=SPACE$(7)
- b2$=SPACE$(7)
- b1$=STR$(b1#)
- b2$=STR$(b2#)
- GOSUB muster
- GOSUB kaufhaus
- RETURN
- PROCEDURE muster
- DEFMOUSE bitmuster$
- DEFTEXT 1,0,0,13
- BOX 30,40,610,360
- BOX 40,50,600,350
- FILL 45,45
- BOX 160,60,480,80
- TEXT 170,75,300,"g-WERT-Berechnung"
- BOX 70,100,590,120
- TEXT 75,115,80,"Standard:"
- TEXT 170,115,stand1$
- BOX 70,130,590,150
- TEXT 75,145,80,"g-WERT:"
- TEXT 170,145,stand2$
- BOX 70,160,590,180
- TEXT 75,175,80,"Kommentar:"
- TEXT 170,175,stand3$
- BOX 70,189,590,211
- TEXT 75,205,115,"Feld [ in Gauß ]"
- BOX 73,191,587,209
- FILL 71,190
- DEFLINE 1,3
- LINE 205,190,205,210
- TEXT 220,205,70,"Standard:"
- DEFLINE 0,0
- BOX 293,190,308,210
- BOX 383,190,398,210
- BOX 473,190,488,210
- BOX 563,190,578,210
- TEXT 296,206,"⇦"
- TEXT 296,206,"⇦"
- TEXT 386,206,"⇨"
- TEXT 476,206,"⇦"
- TEXT 566,206,"⇨"
- TEXT 310,205,70,b1$
- TEXT 400,205,70,"Probe:"
- TEXT 490,205,70,b2$
- DEFLINE 1,0
- BOX 160,225,480,255
- BOX 155,220,485,260
- DEFFILL 1,2,9
- FILL 158,256
- DEFTEXT 1,16,0,17
- TEXT 170,247,100,"g-Wert ="
- BOX 350,270,580,340
- BOX 70,270,300,340
- BOX 100,275,270,295
- BOX 100,310,270,330
- BOX 380,275,550,295
- DEFTEXT 1,0,0,13
- TEXT 400,290,130," Standard "
- TEXT 120,290,130," Berechnen "
- TEXT 120,325,130," ADELE "
- BOX 360,310,420,330
- BOX 435,310,495,330
- BOX 510,310,570,330
- TEXT 365,325,50,"NEUER"
- TEXT 440,325,50,"LADEN"
- TEXT 512,325,55,"SICHERN"
- DEFFILL 1,4
- FILL 72,272
- DEFFILL 1,2,16
- FILL 352,272
- DEFFILL 1,2,20
- FILL 55,55
- RETURN
- PROCEDURE kaufhaus
- DEFMOUSE bitmuster$
- DO
- IF MOUSEY>190 AND MOUSEY<210
- IF MOUSEK>0
- IF MOUSEX>293 AND MOUSEX<308
- p%=1
- GOSUB aufnieder1
- ENDIF
- IF MOUSEX>383 AND MOUSEX<398
- p%=2
- GOSUB aufnieder1
- ENDIF
- IF MOUSEX>473 AND MOUSEX<488
- p%=3
- GOSUB aufnieder2
- ENDIF
- IF MOUSEX>565 AND MOUSEX<578
- p%=4
- GOSUB aufnieder2
- ENDIF
- ENDIF
- ENDIF
- IF MOUSEX>100 AND MOUSEX<270
- IF MOUSEK>0
- IF MOUSEY>275 AND MOUSEY<295
- GOSUB berechnen
- ENDIF
- IF MOUSEY>310 AND MOUSEY<330
- GOTO gwertende
- ENDIF
- ENDIF
- ENDIF
- IF MOUSEY>310 AND MOUSEY<330
- IF MOUSEK>0
- IF MOUSEX>360 AND MOUSEX<420
- GOSUB dateneingabe
- ENDIF
- IF MOUSEX>435 AND MOUSEX<495
- GOSUB lade
- GOSUB gwertbeschrift
- ENDIF
- IF MOUSEX>510 AND MOUSEX<570
- GOSUB speicher
- ENDIF
- ENDIF
- ENDIF
- LOOP
- gwertende:
- RETURN
- PROCEDURE aufnieder1
- IF p%=1
- IF MOUSEK=1
- ADD b1#,0.01
- ELSE
- ADD b1#,1
- ENDIF
- PAUSE 8
- ENDIF
- IF p%=2
- IF MOUSEK=1
- SUB b1#,0.01
- ELSE
- SUB b1#,1
- ENDIF
- PAUSE 8
- ENDIF
- b1#=ROUND(b1#,2)
- b#=b1#*100
- b$=SPACE$(7)
- RSET b$=STR$(b#)
- b1$=MID$(b$,1,5)+"."+MID$(b$,6)+" "
- TEXT 310,205,b1$
- RETURN
- PROCEDURE aufnieder2
- IF p%=3
- IF MOUSEK=1
- ADD b2#,0.01
- ELSE
- ADD b2#,1
- ENDIF
- PAUSE 8
- ENDIF
- IF p%=4
- IF MOUSEK=1
- SUB b2#,0.01
- ELSE
- SUB b2#,1
- ENDIF
- PAUSE 8
- ENDIF
- b2#=ROUND(b2#,2)
- b#=b2#*100
- b$=SPACE$(7)
- RSET b$=STR$(b#)
- b2$=MID$(b$,1,5)+"."+MID$(b$,6)+" "
- TEXT 490,205,70,b2$
- RETURN
- PROCEDURE dateneingabe
- CLS
- BOX 40,50,600,360
- PRINT AT(20,8);
- PRINT AT(10,8);"Standard: ";stand1$
- PRINT AT(10,12);"g-Wert: ";stand2$
- PRINT AT(10,16);"Kommentar:";stand3$
- PRINT AT(10,20);"Feld [ in Gauß ]:"
- PRINT AT(30,20);"Standard: ";b1$
- PRINT AT(55,20);"Probe: ";b2$
- PRINT AT(20,8);
- FORM INPUT 50 AS stand1$
- stand$(1)=stand1$
- PRINT AT(20,12);
- FORM INPUT 10 AS stand2$
- stand$(2)=stand2$
- PRINT AT(20,16);
- FORM INPUT 50 AS stand3$
- stand$(3)=stand3$
- PRINT AT(41,20);
- FORM INPUT 7 AS b1$
- PRINT AT(65,20);
- FORM INPUT 7 AS b2$
- b1#=VAL(b1$)
- b2#=VAL(b2$)
- CLS
- GOSUB muster
- RETURN
- PROCEDURE speicher
- LOCAL wahl$,l$,but%
- l$=CHR$(GEMDOS(25)+65)
- FILESELECT l$+":\daten\*.gwe",".gwe",wahl$
- IF wahl$=""
- GOTO schreibend
- ENDIF
- OPEN "O",#1,wahl$
- FOR n%=1 TO 3
- WRITE #1,stand$(n%)
- NEXT n%
- CLOSE
- ALERT 2," SOLLEN DIE PARAMETER | FILENAME UND FELDSRTÄRKEN | MIT ABGESPEICHERT WERDEN? ",1," FREILI | HÄH ",but%
- IF but%=1
- OPEN "O",#1,"G_WERT.PAR"
- WRITE #1,wahl$
- WRITE #1,b1#,b2#
- CLOSE
- ENDIF
- schreibend:
- DEFMOUSE bitmuster$
- RETURN
- PROCEDURE lade
- LOCAL wahl$,l$,but%
- l$=CHR$(GEMDOS(25)+65)
- FILESELECT l$+":\daten\*.GWE",".GWE",wahl$
- IF wahl$=""
- GOTO lesend
- ENDIF
- IF EXIST(wahl$)
- OPEN "I",#1,wahl$
- FOR i%=1 TO 3
- INPUT #1,stand$(i%)
- NEXT i%
- CLOSE
- ELSE
- ALERT 1," SORRY OPEN ERROR | | (keine Datei gefunden) ",1,"NICHT OK",but%
- ENDIF
- lesend:
- DEFMOUSE bitmuster$
- RETURN
- PROCEDURE berechnen
- LOCAL gwert$,g$,gstan#,gwert#
- gstan#=VAL(stand2$)
- gwert#=gstan#*b1#/b2#
- gwert$=STR$(gwert#)
- g$=SPACE$(7)
- LSET g$=MID$(gwert$,1,1)+"."+MID$(gwert$,3,5)+"000000"
- DEFTEXT 1,16,0,17
- TEXT 280,247,g$
- DEFTEXT 1,0,0,13
- RETURN
- '
- '
- PROCEDURE rausch
- LOCAL r%,x%,y%,i%,l%,maus%,bereich#,r#,zufall#,auf#,fak#,rausch#
- IF huell!=-1 OR bereichsplott!=-1
- CLS
- '
- BOX 49,150,601,251
- LINE 49,199,601,199
- LINE 49,251,49,265
- LINE 320,251,320,265
- LINE 601,251,601,265
- DEFFILL 1,2,14
- PBOX 100,300,550,350
- DEFTEXT 1,16,0,13
- TEXT 120,330,410," Gut gerauscht ist halb betrogen , oder ? "
- DEFTEXT 1,0,0,13
- TEXT 40,275,"0 %"
- TEXT 311,275,"50 %"
- TEXT 590,275,"100 %"
- TEXT 100,180,200," Prozent Grundrauschen :"
- DO UNTIL maus%=1
- IF MOUSEY>300 AND MOUSEY<350 AND MOUSEX>100 AND MOUSEX<550 AND MOUSEK=1
- maus%=1
- ENDIF
- IF MOUSEK=2
- maus%=1
- ENDIF
- IF INKEY$=CHR$(13)
- maus%=1
- ENDIF
- IF MOUSEY>200 AND MOUSEY<250
- x%=MOUSEX
- IF MOUSEK=1
- IF x%<600 AND x%>50
- DEFFILL 0
- BOUNDARY 0
- PBOX x%,200,600,250
- DEFFILL 1,2,17
- BOUNDARY 1
- PBOX 50,200,x%,250
- r%=x%-51
- r#=ROUND(r%/5.48,2)
- TEXT 320,180," %"
- TEXT 320,180,r#
- ENDIF
- ENDIF
- ENDIF
- LOOP
- '
- zufall#=r#*3
- zufall#=ABS(zufall#)
- CLS
- SPUT x1$
- DEFFILL 0
- BOUNDARY 0
- PBOX 28,61,612,359
- DRAW 27,210
- IF huell!=TRUE
- fa#=586/sweep#
- IF sweep#>=simsw#
- fak#=fa#*simsw#/bi%
- anf#=(sweep#-simsw#)/2*fa#+27
- FOR i%=27 TO anf#
- FOR l%=1 TO 4
- rausch#=RANDOM(zufall#)
- r%=210+CINT(rausch#-zufall#/2)
- DRAW TO i%,r%
- NEXT l%
- NEXT i%
- FOR l%=0 TO bi%
- rausch#=RANDOM(zufall#)
- x%=l%*fak#+anf#
- y%=CINT(210+huelk%(kurve%-1,l%)*hoehe#*ver#)
- r%=y%+CINT(rausch#-zufall#/2)
- IF r%>360
- r%=360
- ENDIF
- IF r%<60
- r%=60
- ENDIF
- DRAW TO x%,r%
- NEXT l%
- FOR i%=x% TO 612
- FOR l%=1 TO 4
- rausch#=RANDOM(zufall#)
- r%=210+CINT(rausch#-zufall#/2)
- DRAW TO i%,r%
- NEXT l%
- NEXT i%
- ELSE
- anf#=sweep#/2*ppg#+0.5
- start%=spekha%-INT(anf#)
- bis%=spekha%+INT(anf#)
- fak#=586/(bis%-start%)
- FOR l%=start% TO bis%
- rausch#=RANDOM(zufall#)
- x%=(l%-start%)*fak#+27
- y%=CINT(210+huelk%(kurve%-1,l%)*hoehe#*ver#)
- r%=y%+CINT(rausch#-zufall#/2)
- IF r%>360
- r%=360
- ENDIF
- IF r%<60
- r%=60
- ENDIF
- DRAW TO x%,r%
- NEXT l%
- ENDIF
- ENDIF
- IF bereichsplott!=TRUE
- IF le%=0
- PRINT AT(30,14);"WAR WOHL NIX !";
- GOTO warnix
- ENDIF
- bereich%=le%-la%
- fak#=586/bereich%
- bereichshalbe%=bereich%/2+la%
- IF la%>bi%
- GOTO gerade2
- ENDIF
- IF la%<0 OR la%=0
- anfang%=0
- start%=CINT(ABS(la%*fak#)+27)
- ENDIF
- IF la%>0
- anfang%=la%
- start%=27
- ENDIF
- IF le%<0 OR le%=0
- gerade2:
- DRAW 27,210
- FOR i%=27 TO 612
- rausch#=RANDOM(zufall#)
- r%=210+CINT(rausch#-zufall#/2)
- IF r%>360
- r%=360
- ENDIF
- IF r%<60
- r%=60
- ENDIF
- DRAW TO i%,r%
- NEXT i%
- gerade!=TRUE
- GOTO rauschende
- ELSE
- IF le%>bi%
- ende%=bi%
- ELSE
- ende%=le%
- ENDIF
- ENDIF
- '
- DRAW 27,210
- FOR i%=27 TO start%
- rausch#=RANDOM(zufall#)
- r%=210+CINT(rausch#-zufall#/2)
- IF r%>360
- r%=360
- ENDIF
- IF r%<60
- r%=60
- ENDIF
- DRAW TO i%,r%
- NEXT i%
- '
- FOR l%=anfang% TO ende%
- rausch#=RANDOM(zufall#)
- x%=(l%-anfang%)*fak#+start%
- y%=210+huelk%(kurve%-1,l%)*hoehe#*ver#
- r%=y%+CINT(rausch#-zufall#/2)
- IF r%>360
- r%=360
- ENDIF
- IF r%<60
- r%=60
- ENDIF
- DRAW TO x%,r%
- NEXT l%
- FOR i%=x% TO 612
- rausch#=RANDOM(zufall#)
- r%=210+CINT(rausch#-zufall#/2)
- IF r%>360
- r%=360
- ENDIF
- IF r%<60
- r%=60
- ENDIF
- DRAW TO i%,r%
- NEXT i%
- ENDIF
- rauschende:
- HIDEM
- SGET x1$
- SHOWM
- ENDIF
- warnix:
- BOUNDARY 1
- BOUNDARY 1
- '
- RETURN
- '
- '
- ' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- PROCEDURE laufwerk
- LOCAL l$,al%,x%,k%,i%,lx%,maus%,auswahl!
- CLS
- DEFTEXT 1,0,0,13
- l$=BIN$(BIOS(10))
- al%=GEMDOS(25)
- k%=LEN(l$)
- start:
- al%=k%-al%
- BOX 140,100,500,140
- TEXT 160,125,320," Aktuelles Laufwerk :"
- BOX 200,300,440,340
- TEXT 220,325,200," In Ordnung so ?"
- BOX 140,200,500,240
- BOX 140,40,500,80
- FOR i%=1 TO 8
- x%=140+40*i%
- LINE x%,200,x%,240
- NEXT i%
- TEXT 160,225,320,"ABCDEFGHI"
- FOR i%=k% TO 8
- x%=160+40*i%
- DEFFILL 1,2,9
- FILL x%,230,1
- NEXT i%
- x%=120+40*k%
- FOR i%=k% TO 1 STEP -1
- IF i%<>al%
- IF MID$(l$,i%,1)="0"
- DEFFILL 1,2,9
- ELSE
- DEFFILL 1,2,2
- ENDIF
- x%=160+40*(k%-i%)
- FILL x%,230,1
- ENDIF
- NEXT i%
- laufschleife:
- maus%=0
- DO UNTIL maus%>0
- IF INKEY$=CHR$(13)
- maus%=2
- ENDIF
- IF MOUSEK=1
- IF MOUSEY>200 AND MOUSEY<240 AND MOUSEX>140 AND MOUSEX<500
- auswahl!=-1
- lx%=MOUSEX
- SUB lx%,140
- DIV lx%,40
- INC lx%
- maus%=1
- ENDIF
- IF MOUSEY>300 AND MOUSEX>200 AND MOUSEX<440 AND MOUSEY<340
- maus%=2
- ENDIF
- ENDIF
- LOOP
- IF maus%=1
- IF lx%>k%
- GOTO laufschleife
- ENDIF
- DEC lx%
- IF MID$(l$,(k%-lx%),1)="0"
- GOTO laufschleife
- ELSE
- al%=lx%
- ENDIF
- CLS
- GOTO start
- ENDIF
- laufende:
- IF auswahl!=-1
- CHDRIVE lx%+1
- ENDIF
- al%=DFREE(0)
- TEXT 160,65,320,"NOCH "+STR$(al%)+" BYTE PLATZ AUF DER DISKETTE"
- GOSUB datenordner
- DO UNTIL (MOUSEK>0) OR (INKEY$>"")
- LOOP
- CLS
- RETURN
- '
- ' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- PROCEDURE datenordner
- CHDIR "\"
- IF 0<>FSFIRST("daten",-1)
- MKDIR "DATEN"
- ENDIF
- CHDIR "\DATEN"
- RETURN
- '
- ' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- '
- '
- ' *****************************************************************
- ' MANIPULATIOENEN MIT GEMESSENEN SPEKTREN
- ' *****************************************************************
- '
- '
- PROCEDURE esp300
- LOCAL par!,butt%,parwahl$,bu%,but%,b%,button%,btton%,buttn%,maus%
- LOCAL spek!,a$,b$,c$,parwahl$,punkt%,bakl%,d%,abut%,par$,specfile$
- LOCAL spec%,spc$,smax%,smin%,pech!,l%,i%,e%,spunkte%,f#,al%,res!,abutt%,n#,z%
- LOCAL bcd%,bcf%,bce%,ab%,ba%,kuck1!,kuck2!,bc%,bb%,gr#,messfak#,param!,dr%,x%,y%
- LOCAL laenge%
- DEFTEXT 1,0,0,13
- inpeingabe:
- ALERT 2," | WAS SOLL GELESEN WERDEN ? ",0,"PARAME| SPEKTR | NIX ",butt%
- IF butt%=3
- GOTO convende
- ENDIF
- IF butt%=1
- select1:
- IF spek!=-1
- c$=b$+".PAR"
- ELSE
- c$=""
- ENDIF
- FILESELECT "A:\*.par",c$,parwahl$
- IF parwahl$>""
- IF NOT EXIST(parwahl$)
- ALERT 1,parwahl$+":|Diese Datei existiert nicht!",1," ZURÜCK ",button%
- GOTO select1
- ENDIF
- ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++
- a$=parwahl$
- punkt%=RINSTR(a$,".")
- bakl%=RINSTR(a$,"\")
- d%=punkt%-bakl%-1
- a$=MID$(a$,bakl%+1,d%)
- IF spek!=-1
- IF a$<>b$
- ALERT 3," "+a$+" SOLL DER | PARAMETERFILE ZUM | SPEKTRENFILE "+b$+" | SEIN ???",1," NEE | SO ISSES",abut%
- IF abut%=1
- GOTO select1
- ENDIF
- ENDIF
- ENDIF
- ' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- CLR spsw#,res%
- OPEN "I",#1,parwahl$
- z%=0
- DO
- INPUT #1,par$
- IF par$=""
- INC z%
- ENDIF
- EXIT IF z%=2
- PRINT par$
- IF LEFT$(par$,3)="HSW"
- spsw#=ROUND(VAL(MID$(par$,4)),2)
- ENDIF
- IF LEFT$(par$,3)="GSI"
- spsw#=ROUND(VAL(MID$(par$,4)),2)
- ENDIF
- IF LEFT$(par$,3)="HCF"
- cf#=ROUND(VAL(MID$(par$,4)),2)
- ENDIF
- IF LEFT$(par$,3)="GST"
- lirand#=ROUND(VAL(MID$(par$,4)),2)
- ENDIF
- IF LEFT$(par$,3)="RES"
- res%=VAL(MID$(par$,4))
- ENDIF
- LOOP
- IF cf#=0
- CLS
- PRINT AT(20,10);" CENTERFILED IST NICHT | DEFFINIERT!! "
- PRINT AT(20,15);
- INPUT "CENTERFIELD: ";cf#
- ENDIF
- IF spsw#=0
- IF lirand#>0
- spsw#=ROUND(2*(cf#-lirand#),2)
- ENDIF
- ENDIF
- par!=TRUE
- CLOSE
- mess!=0
- ELSE
- GOTO inpeingabe
- ENDIF
- IF spek!=0
- GOTO inpeingabe
- ENDIF
- ENDIF
- IF butt%=2
- IF par!=FALSE
- ALERT 3," | | PARAMETER SIND NOCH | NICHT GELESEN !",1," OH JE |NA UND ",buttn%
- IF buttn%=1
- GOTO inpeingabe
- ENDIF
- ENDIF
- select2:
- IF par!=-1
- c$=a$+".BIN"
- ELSE
- c$=""
- ENDIF
- FILESELECT "A:\*.BIN",c$,specfile$
- IF specfile$>""
- IF NOT EXIST(specfile$)
- ALERT 1,specfile$+":|Diese Datei existiert nicht!",1," ZURÜCK ",btton%
- GOTO select2
- ENDIF
- ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- b$=specfile$
- punkt%=RINSTR(b$,".")
- bakl%=RINSTR(b$,"\")
- d%=punkt%-bakl%-1
- b$=MID$(b$,bakl%+1,d%)
- IF par!=-1
- IF a$<>b$
- ALERT 3," "+a$+" SOLL DER | PARAMETERFILE ZUM | SPEKTRENFILE "+b$+" | SEIN ???",1," NEE | SO ISSES",abut%
- IF abut%=1
- GOTO select2
- ENDIF
- ENDIF
- ENDIF
- ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ERASE spek%()
- DIM spec%(9000)
- ERASE spektrum%()
- ERASE dif%()
- OPEN "i",#1,specfile$
- l%=0
- laenge%=LOF(#1)
- DO
- EXIT IF laenge%-LOC(#1)<76
- INPUT #1,spc$
- IF LEFT$(spc$,2)="S1"
- FOR i%=9 TO 65 STEP 8
- INC l%
- IF l%<=9000
- spec%(l%)=VAL("&"+MID$(spc$,i%,8))
- IF spec%(l%)>smax%
- smax%=spec%(l%)
- ENDIF
- IF spec%(l%)<smin%
- smin%=spec%(l%)
- ENDIF
- ELSE
- pech!=-1
- ENDIF
- NEXT i%
- ENDIF
- LOOP
- spek!=-1
- CLOSE
- mess!=0
- CLS
- IF pech!=-1
- ALERT 3," DATEI ENTHÄLT MEHR ALS | 9000 STÜTZSTELLEN DAS | KANN NICHT SEIN !",1," ENDE ",e%
- CLOSE
- GOTO convende
- ENDIF
- '
- spunkte%=l%
- ' **************** Hier wird gerechnet !
- '
- DIM spektrum%(spunkte%)
- f#=ADD(ABS(smin%),smax%)/2
- f#=1E+06/f#
- FOR i%=1 TO spunkte%
- spektrum%(i%)=CINT(spec%(i%)*f#)
- NEXT i%
- ERASE spec%()
- '
- ' ******************************************************************
- '
- '
- ELSE
- GOTO inpeingabe
- ENDIF
- ENDIF
- '
- ' ***************** Hier wird überprüft !
- IF par!=0
- ALERT 3," PARAMETER SIND IMMER | NOCH NICHT GELESEN! ",1,"JA DOCH | KUCKEN | NA UND ",al%
- IF al%=1
- GOTO inpeingabe
- ENDIF
- IF al%=2
- param!=-1
- GOTO kucken
- ENDIF
- ENDIF
- IF res%>0
- res!=-1
- ENDIF
- n$=STR$(spunkte%)
- res$=STR$(res%)
- IF res!=-1
- IF res%<>spunkte%
- IF res%<spunkte% AND res%<0
- ALERT 3," DAS IST JA OBER FAUL ! | | MEHR STÜTZSTELLEN ("+n$+") | ALS RESOLUTION ("+res$+")",1," KO |NUN DENN ",abutt%
- IF abutt%=1
- GOTO convende
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- n#=spunkte%/1024
- IF n#>8
- ALERT 3," DA STIMMT WAS NICHT! | ES SIND "+n$+" | STÜTZSTELLEN VORHANDEN | ALSO ZUVIELE ",1,"SCH...",b%
- GOTO convende
- ENDIF
- IF n#==1 OR n#==2 OR n#==4 OR n#==8
- ELSE
- ALERT 3," DA STIMMT WAS NICHT ! | ES SIND NUR "+n$+" | STÜTZSTELLEN VORHANDEN !",1,"AENDERN| GUTSO | SCH...",bu%
- ENDIF
- IF bu%=3
- GOTO convende
- ENDIF
- IF bu%=2
- ALERT 1," | DAS GIBT JA DOCH NUR | | MIST ! ",1," JA DOCH | DENKSTE ",but%
- IF but%=1
- GOTO convende
- ELSE
- ALERT 2," ES WURDEN "+n$+" | STÜTZSTELLEN GELESEN ",1," OK | NEIN ",bcd%
- IF bcd%=1
- res%=spunkte%
- ELSE
- IF res%>0
- ALERT 1," IN DER PARAMETERLISTE | IST DIE AUFLÖSUNG MIT | "+res$+" ANGEGEBEN !",1," OK | NEIN ",bcf%
- IF bcf%=1
- GOTO wech
- ENDIF
- ENDIF
- PRINT AT(30,13);
- INPUT " AUFLÖSUNG: ",res%
- ENDIF
- wech:
- ENDIF
- ENDIF
- IF bu%=1
- ALERT 2," ES WURDEN "+n$+" | STÜTZSTELLEN GELESEN ",1," OK | NEIN ",bce%
- IF bce%=1
- res%=spunkte%
- ELSE
- IF res%>0
- ALERT 1," IN DER PARAMETERLISTE | IST DIE AUFLÖSUNG MIT | "+res$+" ANGEGEBEN !",1," OK | NEIN ",bcf%
- IF bcf%=1
- GOTO wecher
- ENDIF
- ENDIF
- PRINT AT(30,13);
- INPUT " AUFLÖSUNG: ",res%
- ENDIF
- wecher:
- ENDIF
- '
- IF par!=0
- ALERT 3," | PARAMETER LESEN! ",1," JA DOCH | NA UND ",ab%
- IF ab%=1
- GOTO inpeingabe
- ENDIF
- ENDIF
- def:
- IF res%=0
- ALERT 3," | DIE AUFLÖSUNG IST | NICHT DEFINIERT ! ",1," KUCKEN | SETZEN | NIX DA ",ba%
- IF ba%=3
- GOTO convende
- ENDIF
- IF ba%=1
- kuck1!=-1
- GOTO kucken
- ENDIF
- IF ba%=2
- ALERT 1," ES WURDEN "+n$+" | STÜTZSTELLEN GELESEN ",1," OK | NEIN ",bc%
- IF bc%=1
- res%=spunkte%
- ELSE
- PRINT AT(30,13);
- INPUT " AUFLÖSUNG: ",res%
- ENDIF
- kuck1!=0
- ENDIF
- ENDIF
- IF spsw#=0
- ALERT 3," | DIE SWEEP-WEITE IST | NICHT DEFINIERT ! ",1," KUCKEN | SETZEN | NIX DA ",bb%
- IF bb%=3
- GOTO convende
- ENDIF
- IF bb%=1
- kuck2!=-1
- GOTO kucken
- ENDIF
- IF bb%=2
- PRINT AT(30,13);
- INPUT " SWEEP-WEITE: ";spsw#
- kuck2!=0
- ENDIF
- ENDIF
- '
- IF kuck1!=-1 OR kuck2!=-1
- kucken:
- ' *************** Hier wird gezeichnet !
- CLS
- '
- DEFLINE 1,1
- gr#=150/1E+06
- messfak#=586/spunkte%
- DRAW 27,210
- FOR i%=1 TO spunkte%
- x%=i%*messfak#+27
- y%=CINT(210-spektrum%(i%)*gr#)
- DRAW TO x%,y%
- NEXT i%
- DO UNTIL maus%=1
- IF MOUSEK>0
- maus%=1
- ENDIF
- LOOP
- IF param!=-1
- param!=0
- GOTO inpeingabe
- ENDIF
- IF kuck1!=-1 OR kuck2!=-1
- GOTO def
- ENDIF
- '
- ' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ENDIF
- CLS
- '
- DIM spek%(res%)
- IF res%>=spunkte%
- daten%=spunkte%
- ELSE
- daten%=res%
- ENDIF
- '
- l%=1
- DO UNTIL l%=daten%+1
- spek%(l%)=spektrum%(l%)
- spek%(l%)=spektrum%(l%)
- INC l%
- LOOP
- ERASE spektrum%()
- mess$=a$
- GOSUB messpektrum
- mess!=TRUE
- messtart%=0
- MENU 38,3
- MENU 41,3
- MENU 42,3
- MENU 43,3
- ' *****************************************************************
- convende:
- RETURN
- '
- '
- '
- '
- PROCEDURE messlese
- LOCAL button%,wahl$,punkt%,bakl%,d%,l$
- DEFTEXT 1,0,0,13
- select3:
- l$=CHR$(GEMDOS(25)+65)
- FILESELECT l$+":\*.SPC","",wahl$
- IF wahl$>""
- IF NOT EXIST(wahl$)
- ALERT 1,wahl$+":|Diese Datei existiert nicht!",1," ZURÜCK ",button%
- GOTO select3
- ENDIF
- ' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ERASE spek%()
- ERASE dif%()
- VOID FRE(0)
- OPEN "I",#1,wahl$
- INPUT #1,spsw#,res%,cf#
- DIM spek%(res%)
- BGET #1,VARPTR(spek%(0)),DIM?(spek%())*4
- CLOSE
- mess!=-1
- MENU 38,3
- MENU 41,3
- MENU 42,3
- MENU 43,3
- ' +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- punkt%=RINSTR(wahl$,".")
- bakl%=RINSTR(wahl$,"\")
- d%=punkt%-bakl%-1
- mess$=MID$(wahl$,bakl%+1,d%)
- ' +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- messtart%=0
- GOSUB messpektrum
- ENDIF
- RETURN
- '
- '
- PROCEDURE messchreiben
- LOCAL wahl$,button%,l$
- IF mess!=-1
- select4:
- l$=CHR$(GEMDOS(25)+65)
- FILESELECT l$+":\*.SPC",mess$+".SPC",wahl$
- VOID FRE(0)
- IF wahl$>""
- IF EXIST(wahl$)
- ALERT 1,wahl$+":|Diese Datei existiert schon!",1," ZURÜCK | WEITER ",button%
- IF button%=1
- GOTO select4
- ENDIF
- ENDIF
- OPEN "O",#1,wahl$
- WRITE #1,spsw#,res%,cf#
- BPUT #1,VARPTR(spek%(0)),DIM?(spek%())*4
- CLOSE
- ENDIF
- ENDIF
- RETURN
- '
- '
- PROCEDURE messpektrum
- MENU OFF
- LOCAL i%,l%,x%,y%,gr%,maus%,dr%,y1%,pix%,ver%
- ver%=1
- DEFTEXT 1,0,0,6
- DEFLINE 1,1
- zeigen:
- gr#=150/1E+06
- messfak#=586/res%
- DRAW 27,210
- FOR i%=1 TO res%
- x%=i%*messfak#+27
- y%=CINT(210-spek%(i%)*gr#)
- DRAW TO x%,y%
- NEXT i%
- GET 27,50,613,390,aus$
- CLS
- BOX 27,60,613,360
- LINE 27,210,613,210
- LINE 27,360,27,365
- LINE 613,360,613,365
- manf#=ROUND((cf#-spsw#/2),2)
- mend#=ROUND((cf#+spsw#/2),2)
- TEXT 10,375,manf#
- TEXT 580,375,mend#
- PRINT AT(3,2);" Spektrum: ";mess$;
- PRINT AT(40,2);" Auflösung: ";res%;
- PRINT AT(3,5);" Gemessene Sweep-Weite: ";spsw#;
- BOX 300,30,400,45
- BOX 500,30,600,45
- TEXT 310,40,80,"IN ORDNUNG ?"
- TEXT 510,40,80," VERÄNDERN "
- HIDEM
- SGET x1$
- SHOWM
- PUT 27,50,aus$,7
- maus%=0
- DO UNTIL maus%>0
- IF MOUSEK=1
- IF MOUSEY>30 AND MOUSEY<45
- IF MOUSEX>300 AND MOUSEX<400
- maus%=1
- ENDIF
- IF MOUSEX>500 AND MOUSEX<600
- maus%=2
- ENDIF
- ENDIF
- ENDIF
- LOOP
- IF maus%=2
- ALERT 2," | WAS DENN NU SCHON WIEDER ? ",2," GRÖßE | DREHEN | HÖHE ",dr%
- IF dr%=1
- BOX 614,60,631,360
- LINE 615,210,630,210
- DO UNTIL MOUSEK=2
- DO WHILE MOUSEK=1
- DEFLINE 1,3
- DEFFILL 0,0
- IF MOUSEY>59 AND MOUSEY<361
- y%=MOUSEY-210
- ver%=-y%
- u%=210+y%
- o%=210-ver%
- IF u%<=210
- u%=210
- ENDIF
- IF o%>=210
- o%=210
- ENDIF
- LINE 622,210,622,210+y%
- PBOX 615,60,630,o%
- PBOX 615,360,630,u%
- DEFLINE 1,1
- BOX 614,60,631,360
- LINE 615,210,630,210
- ENDIF
- LOOP
- LOOP
- IF ver%=0
- ver%=1
- ENDIF
- mul#=ver%
- mul#=ABS(mul#/10)
- IF mul#<1
- mul#=1
- ENDIF
- IF ver%<0
- mul#=1/mul#
- ENDIF
- '
- l%=1
- DO UNTIL l%=res%+1
- spek%(l%)=CINT(spek%(l%)*mul#)
- INC l%
- LOOP
- CLS
- GOTO zeigen
- ENDIF
- IF dr%=2
- l%=1
- DO UNTIL l%=res%+1
- spek%(l%)=-spek%(l%)
- INC l%
- LOOP
- CLS
- GOTO zeigen
- ENDIF
- '
- IF dr%=3
- '
- y1%=50
- DO UNTIL MOUSEK=2
- DEFMOUSE bitmuster$
- y%=MOUSEY-y1%
- IF MOUSEK=1
- my%=MOUSEY
- DO UNTIL MOUSEK=0
- DEFMOUSE 4
- y1%=SUB(MOUSEY,y%)
- SPUT x1$
- PUT 27,y1%,aus$,7
- PAUSE 8
- LOOP
- ENDIF
- LOOP
- pix%=CINT((50-y1%)/gr#)
- l%=1
- DO UNTIL l%=res%+1
- ADD spek%(l%),pix%
- INC l%
- LOOP
- CLS
- GOTO zeigen
- ENDIF
- ENDIF
- SPUT x1$
- DEFFILL 0
- PBOX 28,61,612,359
- DEFLINE 1,1
- PUT 27,50,aus$,7
- HIDEM
- SGET x1$
- SHOWM
- MENU 35,3
- MENU 36,3
- CLS
- IF simm!=-1
- MENU 44,3
- ENDIF
- mstart%=1
- mende%=res%
- messfak#=586/res%
- huell!=0
- bereichsplott!=0
- simess!=0
- messplo!=-1
- messbereich!=0
- MENU 37,3
- RETURN
- '
- PROCEDURE espspektrum
- halb!=0
- MENU OFF
- MENU 38,3
- esp:
- CLS
- LOCAL i%,x%,y%
- verg#=1
- offset%=0
- IF 0=(messbereich! OR zentrier!)
- mstart%=1
- mende%=res%
- messfak#=586/res%
- manf#=ROUND((cf#-spsw#/2),2)
- mend#=ROUND((cf#+spsw#/2),2)
- ENDIF
- GOSUB espzeichnung
- DEFTEXT 1,0,0,6
- DEFLINE 1,1
- gr#=150/1E+06
- BOX 27,60,613,360
- LINE 27,360,27,365
- LINE 613,360,613,365
- TEXT 10,375,ROUND(manf#,2)
- TEXT 580,375,ROUND(mend#,2)
- TEXT 300,375,STR$(ROUND(mend#-manf#,2))+" "+"Gauss"
- PRINT AT(3,2);" Spektrum: ";mess$;
- PRINT AT(40,2);" Auflösung: ";res%;
- PRINT AT(3,5);" Gemessene Sweep-Weite: ";spsw#;
- ALERT 2," | ALLES IN ORDNUNG ? | ",1," JAJAJA | RESET ",butt%
- IF butt%=2
- messbereich!=0
- zentrier!=0
- GOTO esp
- ENDIF
- HIDEM
- SGET x1$
- SHOWM
- huell!=0
- bereichsplott!=0
- simess!=0
- messplo!=-1
- RETURN
- '
- PROCEDURE espzeichnung
- DEFLINE 1,1
- gr#=150/1E+06
- DRAW 27,210-offset%
- IF mstart%<res%
- FOR i%=mstart% TO mende%
- IF i%<res%
- x%=(i%-mstart%)*messfak#+27
- IF i%<1
- y%=210-offset%
- ELSE
- y%=CINT(210-offset%-spek%(i%)*gr#*verg#)
- ENDIF
- IF x%>=27
- IF y%>360
- y%=360
- ENDIF
- IF halb!=-1
- IF y%>210
- y%=210
- ENDIF
- ENDIF
- IF y%<60
- y%=60
- ENDIF
- DRAW TO x%,y%
- ENDIF
- IF x%>613
- i%=mende%
- ENDIF
- ENDIF
- NEXT i%
- ENDIF
- IF simess!=-1
- HIDEM
- IF halb!=0
- GET 27,50,613,390,aus$
- ELSE
- GET 27,50,613,230,aus$
- ENDIF
- SHOWM
- ENDIF
- RETURN
- '
- '
- PROCEDURE spekmessbereich
- MENU OFF
- CLS
- LOCAL maus%,key$,x1#,x2#,messbereich%,li%,re%,lix#,rex#,auf#,g1#,g2#
- LOCAL l%,anf#
- halb!=0
- stpg#=res%/spsw#
- anf#=manf#
- messbereich!=0
- messbereichanfang:
- IF messbereich!=FALSE
- verg#=1
- offset%=0
- g1#=0
- g2#=spsw#
- mstart%=1
- mende%=res%
- messfak#=586/res%
- manf#=ROUND((cf#-spsw#/2),2)
- mend#=ROUND((cf#+spsw#/2),2)
- DEFLINE 1,1,0,0
- BOX 27,60,613,360
- LINE 27,360,27,365
- LINE 321,360,321,365
- LINE 613,360,613,365
- DEFTEXT 1,0,0,6
- PRINT AT(3,2);" Spektrum: ";mess$;
- PRINT AT(40,2);"Auflösung: ";res%;
- PRINT AT(3,5);"Gemessene Sweep Width :";spsw#;
- TEXT 18,375,ROUND(manf#,2)
- TEXT 580,375,ROUND(mend#,2)
- TEXT 300,375,STR$(ROUND(mend#-manf#,2))+" "+"Gauss"
- GOSUB espzeichnung
- HIDEM
- SGET x1$
- SHOWM
- ENDIF
- anf#=manf#
- BOX 580,35,613,55
- DEFTEXT 1,1,0,13
- TEXT 583,50,25,"ESC"
- DEFTEXT 1,1,0,6
- maus%=0
- DO
- key$=INKEY$
- IF key$=CHR$(27)
- maus%=3
- ENDIF
- IF key$=CHR$(127)
- maus%=2
- ENDIF
- IF MOUSEK>0
- maus%=1
- ENDIF
- IF MOUSEX>580 AND MOUSEY>35
- IF MOUSEX<613 AND MOUSEY<55 AND MOUSEK>0
- maus%=3
- ENDIF
- ENDIF
- EXIT IF maus%>0
- key$=""
- LOOP
- IF maus%=3
- CLS
- GOTO messbereichende
- ENDIF
- IF maus%=2
- CLS
- messbereich!=0
- GOTO messbereichanfang
- ENDIF
- HIDEM
- SGET x1$
- SHOWM
- DEFLINE 2,1,1,1
- SETMOUSE 321,200,0
- messbereich!=-1
- micks1:
- DO !Abfrage der linken Grenze
- SPUT x1$
- x1#=MOUSEX
- li%=MOUSEX-27
- IF li%<0
- li%=0
- ENDIF
- IF li%>586
- li%=586
- ENDIF
- lix#=ROUND(((g2#-g1#)/586*li%),2)
- PRINT AT(4,7);lix#+anf#
- lix#=lix#+g1#
- COLOR 1
- LINE x1#,60,x1#,360
- PAUSE 5
- IF MOUSEK=1
- COLOR 1
- LINE x1#,60,x1#,360
- lin#=1
- HIDEM
- SGET x1$
- SHOWM
- ENDIF
- EXIT IF lin#=1
- LOOP
- IF x1#<27 OR x1#>613
- GOTO micks1
- ENDIF
- micks2:
- maus%=0
- DO
- SPUT x1$
- x2#=MOUSEX
- re%=MOUSEX-27
- IF re%<0
- re%=0
- ENDIF
- IF re%>586
- re%=586
- ENDIF
- rex#=ROUND(((g2#-g1#)/586*re%),2)
- PRINT AT(14,7);rex#+anf#
- rex#=rex#+g1#
- PRINT AT(24,7);ROUND(rex#-lix#,2);
- COLOR 1
- LINE x2#,60,x2#,360
- PAUSE 5
- COLOR 1
- IF MOUSEK=2
- LINE x2#,60,x2#,360
- lin#=2
- ENDIF
- EXIT IF lin#=2
- LOOP
- IF x1#=x2#
- GOTO micks2
- ENDIF
- IF x2#<x1# OR x2#>614
- GOTO micks2
- ENDIF
- '
- '
- mstart%=CINT(lix#*stpg#)
- mende%=CINT(rex#*stpg#)
- messbereich%=mende%-mstart%
- IF messbereich%=0
- GOTO micks1
- ENDIF
- messfak#=586/messbereich%
- mend#=ROUND(rex#+anf#,2)
- manf#=ROUND(lix#+anf#,2)
- g1#=lix#
- g2#=rex#
- '
- CLS
- DEFLINE 1,1,0,0
- BOX 27,60,613,360
- LINE 27,360,27,365
- LINE 321,360,321,365
- LINE 613,360,613,365
- DEFTEXT 1,0,0,6
- PRINT AT(3,2);" Spektrum: ";mess$;
- PRINT AT(40,2);"Auflösung: ";res%;
- PRINT AT(3,5);"Gemessene Sweep Width :";spsw#;
- TEXT 18,375,ROUND(manf#,2)
- TEXT 580,375,ROUND(mend#,2)
- TEXT 300,375,STR$(ROUND((mend#-manf#),2))+" "+"Gauss"
- '
- GOSUB espzeichnung
- HIDEM
- SGET x1$
- SHOWM
- GOTO messbereichanfang
- '
- messbereichende:
- huell!=0
- bereichsplott!=0
- messbereich!=-1
- simess!=0
- messplo!=-1
- DEFLINE 1,1,0,0
- RETURN
- '
- '
- '
- '
- PROCEDURE simmess
- MENU OFF
- LOCAL altver#,x%,x1%,y%,y1%,maus%,mst%,dummy%,messtart%,gpst#,l%
- gpst#=spsw#/res%
- '
- CLS
- halb!=-1
- DEFTEXT 1,0,0,13
- BOX 80,80,520,110
- TEXT 100,100,400,"LINIENFORM DES SIMULIERTEN SPEKTRUMS"
- BOX 80,110,520,120
- DEFFILL 1,0
- PBOX 400,200,500,250
- DEFFILL 1,1
- PBOX 250,200,350,250
- TEXT 260,230,"IN ORDNUNG"
- PBOX 100,200,200,250
- TEXT 135,230,"HALB"
- TEXT 435,230,"VOLL"
- DEFLINE defl%,1
- LINE 100,115,500,115
- maus%=0
- DO UNTIL maus%=1
- IF INKEY$=CHR$(13)
- maus%=1
- ENDIF
- IF MOUSEK=1
- IF MOUSEY>80 AND MOUSEY<120
- INC defl%
- IF defl%>6
- defl%=1
- ENDIF
- DEFFILL 0,0
- PBOX 82,112,518,118
- DEFLINE defl%,1
- LINE 100,115,500,115
- PAUSE 10
- ENDIF
- IF MOUSEY>200 AND MOUSEY<250
- IF MOUSEX>400 AND MOUSEX<500
- DEFFILL 0,0
- PBOX 101,201,199,249
- TEXT 135,230,"HALB"
- DEFFILL 1,1
- PBOX 401,201,499,249
- TEXT 435,230,"VOLL"
- halb!=0
- ENDIF
- IF MOUSEX>100 AND MOUSEX<200
- DEFFILL 1,1
- PBOX 101,201,199,249
- TEXT 135,230,"HALB"
- DEFFILL 0,0
- PBOX 401,201,499,249
- TEXT 435,230,"VOLL"
- halb!=-1
- ENDIF
- IF MOUSEX>250 AND MOUSEX<350
- maus%=1
- ENDIF
- ENDIF
- ENDIF
- LOOP
- CLS
- '
- simess!=-1
- altver#=ver#
- IF halb!=-1
- offset%=75
- ver#=0.5*ver#
- verg#=0.5
- ELSE
- verg#=1
- offset%=0
- ENDIF
- GOSUB espzeichnung
- CLS
- IF spektrum!=-1
- GOSUB bild
- ELSE
- IF kurve%=0
- ALERT 3," KURVENFORM IST NICHT | DEFINIERT !!!!!! ",1," IS GUT ",l%
- GOTO simessende
- ENDIF
- GOSUB pinsel
- ENDIF
- '
- zentrier:
- CLS
- DEFTEXT 1,0,0,6
- DEFLINE 1,1
- SPUT x1$
- BOX 27,60,613,360
- LINE 27,55,27,365
- LINE 613,55,613,365
- LINE 321,60,321,55
- TEXT 20,370,STR$(amb#)
- TEXT 600,370,STR$(mb#)
- TEXT 300,370,STR$(ROUND(mb#-amb#,2))+" GAUSS"
- TEXT 10,55,STR$(ROUND(manf#,2))
- TEXT 580,55,STR$(ROUND(mend#,2))
- TEXT 300,55,STR$(ROUND(mend#-manf#,2))+" "+"Gauss"
- HIDEM
- SGET x1$
- SHOWM
- PUT 27,50,aus$,7
- x1%=27
- y1%=50
- beginn:
- DEFLINE 1,1
- DEFTEXT 1,0,0,6
- BOX 20,20,120,40
- BOX 250,20,350,40
- BOX 480,20,580,40
- TEXT 30,33,80,"IN ORDNUNG"
- TEXT 260,33,80,"VERSCHIEBEN"
- TEXT 490,33,80,"ZENTRIEREN"
- maus%=0
- DO UNTIL maus%>0
- IF MOUSEK=1 AND MOUSEY>20 AND MOUSEY<40
- IF MOUSEX>20 AND MOUSEX<120
- maus%=1
- ENDIF
- IF MOUSEX>250 AND MOUSEX<350
- maus%=2
- ENDIF
- IF MOUSEX>480 AND MOUSEX<580
- maus%=3
- ENDIF
- ENDIF
- LOOP
- IF maus%=1
- GOTO simessende
- ENDIF
- IF maus%=2
- DEFMOUSE 4
- DO UNTIL MOUSEK=2
- x%=MOUSEX-x1%
- y%=MOUSEY-y1%
- IF MOUSEK=1
- DO UNTIL MOUSEK=0
- x1%=SUB(MOUSEX,x%)
- y1%=SUB(MOUSEY,y%)
- IF y1%<0
- y1%=0
- ENDIF
- SPUT x1$
- PUT x1%,y1%,aus$,7
- PAUSE 8
- LOOP
- ENDIF
- LOOP
- DEFMOUSE bitmuster$
- ENDIF
- IF maus%=3
- messtart%=x1%-27
- SUB mstart%,CINT(messtart%/messfak#)
- SUB mende%,CINT(messtart%/messfak#)
- manf#=ROUND((mstart%-1)*gpst#,2)
- ADD manf#,(cf#-spsw#/2)
- mend#=ROUND((mende%-mstart%)*gpst#+manf#,2)
- CLS
- zentrier!=-1
- GOSUB espzeichnung
- CLS
- GOSUB pinsel
- GOTO zentrier
- ENDIF
- GOTO beginn
- simessende:
- DEFFILL 0,0
- PBOX 0,0,581,41
- TEXT 340,20,280,"simuliertes Spektrum: "+finame$
- TEXT 20,20,280,"gemessenes Spektrum : "+mess$
- TEXT 400,35,"Linienzug: "
- DEFLINE defl%,1
- LINE 500,33,600,33
- TEXT 20,35,"Linienzug: "
- DEFLINE 1,1,0,0
- LINE 120,33,220,33
- ver#=altver#
- offset%=0
- HIDEM
- SGET x1$
- SHOWM
- messplo!=-1
- RETURN
- '
- '
- PROCEDURE sichnum
- MENU OFF
- DEFLINE 1,1,0,0
- DEFTEXT 1,0,0,13
- LOCAL mfak#,sfak#,sichstart%,xpixel%,xa%,l%,x%,y%,z%,aus$,ok!,vgl#
- LOCAL beschriftung$,l$,r$
- verg#=1
- vgl#=ver#
- xpixel%=(start%-27)*2
- gr#=150/1E+06
- hoehe#=gr#
- mfak#=messfak#*2
- sfak#=fak#*2
- IF (bereichsplott! OR huell!) OR simess!
- beschriftung$="SIMULIERT: "+finame$
- l$=STR$(ROUND(amb#,2))
- r$=STR$(ROUND(mb#,2))
- IF messplo!=-1
- ok!=-1
- ALERT 2," | GRAPHMODE | ? | ",2," 1 | 2 ",but%
- IF but%=1
- GRAPHMODE 1
- ELSE
- GRAPHMODE 2
- ENDIF
- IF halb!=-1
- offset%=75
- verg#=0.5
- vgl#=ver#*0.5
- ENDIF
- ELSE
- ok!=0
- verg#=1
- offset%=0
- vgl#=ver#
- defl%=1
- ENDIF
- ENDIF
- FOR z%=1 TO 2 ! ***********************************
- DEFLINE 1,1,0,0
- CLS
- LINE 27,60,613,60
- LINE 27,360,613,360
- IF z%=1
- IF ok!=-1
- LINE 27,50,27,380
- ELSE
- LINE 27,60,27,380
- ENDIF
- LINE 613,360,613,380
- xa%=27
- sichstart%=xa%+xpixel%
- ELSE
- IF ok!=-1
- LINE 613,50,613,380
- ELSE
- LINE 613,60,613,380
- ENDIF
- LINE 27,360,27,380
- xa%=-559
- sichstart%=xa%+xpixel%
- ENDIF
- IF messplo!=-1
- beschriftung$="GEMESSEN: "+mess$+".SPC"
- l$=STR$(ROUND(manf#,2))
- r$=STR$(ROUND(mend#,2))
- messspek:
- IF mstart%<res%
- IF mstart%>1
- st%=spek%(mstart%)
- ELSE
- st%=0
- ENDIF
- DRAW xa%,CINT(210-offset%-st%*gr#*verg#)
- FOR i%=mstart% TO mende%
- IF i%<res%
- x%=(i%-mstart%)*mfak#+xa%
- IF i%<1
- y%=210-offset%
- ELSE
- y%=CINT(210-offset%-spek%(i%)*gr#*verg#)
- ENDIF
- IF y%>360
- y%=360
- ENDIF
- IF halb!=-1
- IF y%>210
- y%=210
- ENDIF
- ENDIF
- IF y%<60
- y%=60
- ENDIF
- IF x%>0 AND x%<640
- DRAW TO x%,y%
- ENDIF
- ENDIF
- NEXT i%
- ENDIF
- IF ok!=-1
- GOTO simspek
- ENDIF
- ELSE
- simspek:
- DEFLINE defl%,1,0,0
- IF p_line!=-1
- LINE 27,210+offset%,613,210+offset%
- gerade!=-1
- ELSE
- gerade!=0
- DRAW xa%,210+offset%
- DRAW TO sichstart%,210+offset%
- FOR l%=anfang% TO ende%
- x%=(l%-anfang%)*sfak#+sichstart%
- y%=210+offset%+huelk%(kurve%-1,l%)*hoehe#*vgl#
- IF y%>360
- y%=360
- ENDIF
- IF y%<60
- y%=60
- ENDIF
- IF halb!=-1
- IF y%<210
- y%=210
- ENDIF
- ENDIF
- IF x%>0 AND x%<640
- DRAW TO x%,y%
- ENDIF
- NEXT l%
- IF x%<613
- DRAW TO 613,210+offset%
- ENDIF
- ENDIF
- ENDIF
- HIDEM
- GET 27,50,613,390,aus$
- SHOWM
- CLS
- PUT 27,30,aus$
- IF ok!=-1
- IF z%=1
- DEFLINE 1,1,0,0
- LINE 400,18,600,18
- BOX 400,10,600,25
- TEXT 10,25,STR$(manf#)
- TEXT 150,25,200,"GEMESSEN: "+mess$+".SPC"
- TEXT 25,370,STR$(ROUND(amb#,2))
- ELSE
- DEFLINE defl%,1,0,0
- LINE 300,18,500,18
- DEFLINE 1,1,0,0
- BOX 300,10,500,25
- TEXT 50,25,200,"SIMULIERT :"+finame$
- TEXT 570,25,STR$(mend#)
- TEXT 600,370,STR$(ROUND(mb#,2))
- ENDIF
- ELSE
- IF z%=1
- TEXT 150,25,200,beschriftung$
- TEXT 25,370,l$
- ELSE
- TEXT 50,25,200,beschriftung$
- TEXT 625-(LEN(r$)*8),370,r$
- ENDIF
- ENDIF
- HIDEM
- SGET x1$
- SHOWM
- GOSUB pixel
- NEXT z% !***********************************************************
- DEFLINE 1,1,0,0
- offset%=0
- GRAPHMODE 1
- RETURN
-